小编典典

强制转换为基本类型的怪异Java行为

java

这可能是在某个地方被问到的,但我找不到。有人可以澄清为什么此代码可以编译并打印出来1吗?

long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);

阅读 224

收藏
2020-09-08

共1个答案

小编典典

它被解析为:

long i = (byte)( +(char)( -(int)( +(long)(-1) ) ) );

所有+-运算符都是一元+或的-

在这种情况下,1两次取反,因此将其打印为1

2020-09-08