很多人都认为下面两段代码是一样的:
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
没错,条件操作符在"必要"的时候会进行数值类型的提升,这个“必要”得加上一个重重的引号。你能想到下面这段程序居然会抛出一个空指针异常吗?
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);
想了解更多请参考 这里 。
java学习知识点
最新推荐文章于 2021-11-02 11:20:58 发布