我有時會從下面的行中獲取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"));
請說清楚我的行爲。提前致謝。
"Date::" + row
從不爲空,儘管row
有時是。
也就是說,"Date::"+ row != null
相當於("Date::"+ row) != null
這總是正確的。
要添加到此,你應該看看http://stackoverflow.com/questions/2137690/java-operator-precedence-guidelines –
謝謝克里斯託弗。得到它了。 @Mike,感謝您的鏈接,內容翔實。 – Vaandu
這是一個運算符優先級的問題。 Christoffer Hammarström有執行摘要。請參閱此頁面http://bmanolov.free.fr/javaoperators.php瞭解更多詳情。
這就是爲什麼我儘量限制嵌套語句/表達式的原因。如果你想將陳述分成兩份,你就不會有這個問題。 – helpermethod