可能重复:
转换为基本类型的怪异Java行为
为什么用Java编写此代码,
int i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
打印1?为什么还要编译?
资料来源:Java Code Geeks
您正在做的是将类型转换与一元运算符结合在一起。
让我们来看看:
首先,您具有将值-1
转换为type的值long
。
然后,您执行一元运算+
,该运算不会更改值,所以您仍然有(long) -1
。
然后,将其转换为int,这样我们就有了int -1
。然后,使用一元运算符-
,所以我们有-(-1)
,这就是1
。
然后将其转换为char,这样我们就可以了char 1
。然后,您使用一元运算符+
,因此您仍然有1
。
最后,将值强制转换为byte
,因此您拥有byte 1
。然后将其再次(隐式)转换为int
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句