Object o1 = true ? new Integer(1) : new Double(2.0);
是否等价
Object o2;
if (true)
o2 = new Integer(1);
else
o2 = new Double(2.0);
让我们看一哈
System.out.println(o1);
System.out.println(o2);
结果是:
1.0
1
由此可见,三目条件运算符会在有需要的情况下,对操作数进行类型提升。注意,是只在有需要时才进行;否则,代码可能会抛出NullPointerException 空引用异常:
Integer i = new Integer(1);
if (i.equals(1))
i = null;
Double d = new Double(2.0);
Object o = true ? i : d; // NullPointerException!
System.out.println(o);