我已經問的矛盾問題在這裏 Why is this not throwing a NullPointerException?爲什麼拋出空指針異常?
之一但這是不同的類型和行爲我想知道的一個,請看看我的例子如下
package com;
public class test {
public static void main(String[] args) {
Abc abc = null;
//Scenario 1
System.out.println("ERROR HERE " + abc!=null?abc.getS1():""); //This is throwing null pointer exception
//Scenario 2
String s1 = abc!=null?abc.getS1():"";
System.out.println("This is fine " + s1);
}
}
class Abc {
String s1;
public String getS1() {
return s1;
}
public void setS1(String s1) {
this.s1 = s1;
}
}
所以在這裏方案2將正常工作,但爲什麼它不工作時,我試圖與其他字符串連接在情景1?
由於在第一種情況下對參數println()進行評估的順序,首先對「ERROR HERE」+ abc'進行評估並給出NPE。 –