在java中发现了一些奇怪的东西。java中的奇怪事物
代码:
System.out.println(System.getProperty("java.version"));
System.out.println((true) ? (int)2.5 : 3.5);
System.out.println((true) ? (int)2.5 : 3);
System.out.println((true) ? (int)2.5 + "" : 3.5);
结果:
1.8.0_40 2.0 2 2
这是什么?为什么整数值只有在false的值不是double或字符串值为true时才返回?为什么在第二行舍入由(int)强制转换工作,但双值返回呢?这是一个错误吗?
不,这些东西不是bug。 – Jesper
就编译器而言,整个'':'表达式只有一种类型,它通过找出两边共同的最窄类型来表示这一点。 –
(我坦白,我很惊讶,最后一行编译,虽然。) –