在以下内联条件中,人们可能期望分别打印一个整数和一个双精度:
System.out.println(true ? 0 : 0.0);
System.out.println(false ? 0 : 0.0);
System.out.println(true ? new Integer(0) : new Double(0.0));
System.out.println(true ? 0 : "");
相反,当它们一起出现时,它们都被打印为双精度:
0.0
0.0
0.0
0
为什么数字与内联条件中的其他数字一起出现时会自动转换?
编辑:如果发生这种情况是因为System.out.println
超载是什么情况:
list.add(true ? 0 : 0.0);
list.add(false ? 0 : 0.0);
list.add(true ? new Integer(0) : new Double(0.0));
list.add(true ? 0 : "");
System.out.println(list);
输出:
[0.0, 0.0, 0.0, 0]