同学碰到的问题,先看代码:
我们很自然的认为会输出
0
Long
结果却是
0.0
Double
原来是java的三元运算符在运算时,两个被选答案会进行一次比对,Long型转成精度更高的Double型
public class Test {
public static void main(String args[]) {
Number rlt = (true
? Long.valueOf("0")
: Double.valueOf("1"));
System.out.println(rlt);
System.out.println(rlt.getClass().getSimpleName());
}
}
我们很自然的认为会输出
0
Long
结果却是
0.0
Double
原来是java的三元运算符在运算时,两个被选答案会进行一次比对,Long型转成精度更高的Double型