【发布时间】:2013-09-02 14:52:51
【问题描述】:
鉴于:
Object x = null;
考虑代码 sn-p #1:
if (x == null || !x.equals(new Object()))
System.out.println("I print!");
代码 sn-p #1 并没有像我最初认为的那样抛出 NullPointerException。在| 操作员的一点帮助下,我可以引发异常。代码 sn-p #2:
if (x == null | !x.equals(new Object()))
System.out.println("This will throw a NullPointerException..");
那么为什么我的第一个代码 sn-p 从未计算过其中包含一元 NOT 运算符的正确表达式(感叹号 !)?根据..所有网站..一元NOT运算符的优先级高于逻辑OR运算符(||)。
【问题讨论】:
-
因为如果
OR中的第一个条件为真,那么评估第二个条件的意义何在? -
是的,我知道,问题是一元 NOT 运算符 (!) 具有更高的优先级,他应该在 OR 运算符之前进行评估。或者我是这么想的!
标签: java operator-precedence unary-operator logical-or