三元运算符的比较问题

同学碰到的问题,先看代码:
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型

你可能感兴趣的:(java)