2011-11-17 52 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