Java 三元运算符和意外的NullPointerException

Java 三元运算符和意外的NullPointerException,java,ternary-operator,Java,Ternary Operator,我有时会从下面的行中得到NullPointerException System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null"); 添加括号后,就可以了 System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null")); 请澄清我的行为。提前感谢。“日期::”+行从不为空,尽管行有时为空 也就是说,“日期::

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

System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null");
添加括号后,就可以了

System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null"));
请澄清我的行为。提前感谢。

“日期::”+行
从不为空,尽管
有时为空


也就是说,
“日期::”+行!=null
相当于
(“日期::”+行)!=null
始终为真。

这是运算符优先级的问题。有执行摘要。有关更多详细信息,请参阅本页。

若要添加此内容,请查看“感谢Christoff”。明白了@迈克,谢谢你的链接,内容丰富。这就是为什么我尽量限制嵌套语句/表达式的原因。如果你把这句话一分为二,你就不会有这个问题了。