public void printManagerAvailable(Manager mgr) {
System.out.println(" Is Manager object available : " + mgr!=null);
}
輸出:打印對象並檢查空
true
爲什麼產量只有true
這裏?我期待:
Is Manager object available : true
public void printManagerAvailable(Manager mgr) {
System.out.println(" Is Manager object available : " + mgr!=null);
}
輸出:打印對象並檢查空
true
爲什麼產量只有true
這裏?我期待:
Is Manager object available : true
,因爲它認爲你說的是" Is Manager object available : " + mgr
所有的!= null
左側。換句話說,它首先執行" Is Manager object available : " + mgr
,然後再比較" Is Manager object available : [Object:Manager]" != null
。
這樣做。
Manager mgr = new Manager();
mgr.setChangeClass(5);
mgr.setChangeClockIn(10);
System.out.println(" Is Manager object available : " + (mgr!=null));
嘗試使用這行代碼。
System.out.println(" Is Manager object available : " + (mgr == null ? "is null" : "not null"));
他希望結果是以太「是管理器對象可用:真」或「是管理器對象可用:假」。只需將'mgr!= null'放入括號就可以實現。 – MakPo
其他答案蓋發生了什麼,這就是爲什麼它正在發生的事情:
的operator precedence Java中的順序提出另外,+
,提前平等,!=
的。
重要的是要認識到這不是由從左到右的順序造成的。
所以,你必須是應用運營商在訂單像這樣的內容:
("Is null : " + mgr) != null
並修復它,你可以用括號來強制優先級的其他方式:
"Is null : " + (mgr != null)
謝謝,我已經得到你。我知道,當經理初始化它永遠不會返回上面的錯誤。我只是拿它作爲例子。 –
@VenkataPavan好了,我調整了你的例子,刪除了與你的問題無關的行,並使它成爲可能,它可能是'null'。 – weston
我不不想打印管理員。我只想知道Manager是否爲空或日誌中可用。我用String.valueOf(mgr)給了我預期的輸出。 「管理器對象是否可用:是」。我想理解爲什麼我只打印「System.out.println(」是管理器對象可用:「+ mgr!= null);」 –