转换为基本类型的奇怪java行为

时间:2011-10-28 03:52:21

标签: java

这可能是在某个地方被问到但我找不到它。有人可以澄清为什么这段代码会编译并打印出1

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

3 个答案:

答案 0 :(得分:42)

它被解析为:

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

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

在这种情况下,1被否定两次,因此它会打印为1

答案 1 :(得分:5)

因为'+'和' - '都是unary operators,并且演员正在处理那些一元的操作数。其余的是数学。

答案 2 :(得分:5)

一元运算符和转换:)

+1是合法的

(byte)+ 1将+1转换为一个字节。

偷偷摸摸!让我思考。