奇怪的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转换为一个字节。
偷偷摸摸的! 让我想。