2011-11-17 53 views
6

我有时会从下面的行中获取NullPointerException三元运算符和意外的空指针异常

System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null"); 

添加括号后,没事的。

System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null")); 

请说清楚我的行为。提前致谢。

+0

这就是为什么我尽量限制嵌套语句/表达式的原因。如果你想将陈述分成两份,你就不会有这个问题。 – helpermethod

回答

13

"Date::" + row从不为空,尽管row有时是。

也就是说,"Date::"+ row != null相当于("Date::"+ row) != null这总是正确的。

+0

要添加到此,你应该看看http://stackoverflow.com/questions/2137690/java-operator-precedence-guidelines –

+0

谢谢克里斯托弗。得到它了。 @Mike,感谢您的链接,内容翔实。 – Vaandu