奇怪的java行为与强制转换为原始types

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

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

它被parsing为:

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

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

在这种情况下, 1被否定两次,所以它打印出1

因为“+”和“ – ”都是一元运算符 ,而且这些元素正在处理那些一元运算的操作数。 其余的是math。

一元运算符和铸造:)

+1是合法的

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

偷偷摸摸的! 让我想。