三元运算符和意外的NullPointerException

时间:2011-11-17 13:48:00

标签: java ternary-operator

我有时会从下面的行中获得NullPointerException

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

添加括号后,没问题。

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

请澄清我的行为。提前谢谢。

2 个答案:

答案 0 :(得分:13)

"Date::" + row永远不会为空,尽管row有时是。

也就是说,"Date::"+ row != null相当于("Date::"+ row) != null,它始终为真。

答案 1 :(得分:2)

这是运营商优先权的问题。 Christoffer Hammarström有执行摘要。有关详细信息,请参阅此页http://bmanolov.free.fr/javaoperators.php