null和“”,==和equals()的混用和區別

提問: if(str == null || "".equals(null))和if(str == null || str.equals(""))有什麼區別嗎?
今天無意間看到自己之前在百度上回答別人的問題,看了一下,發現不夠完美,今天將其進行一番修改並移植到CSDN上,希望對Java初學者能有幫助,如果有更好見解的朋友不妨留言,我們可以互動交流一番。

正題:

如果字符串 str == null 爲真,則前者if()中會返回false,後者if()會報空指針異常;
注:在這兒用的是常用的基本類型String爲例,當然str也可以代表任何Java中的固有類型和自定義的類型,而equals()則代表的是對應str的類型中的方法和屬性。

當str == null 時,表示 str 沒有指向任何實例化的對象(即:str 是沒有的實例化的字符串對象,代表着其不能調用String類中的所有方法),在執行str.equal()方法時,虛擬機會發現str不能調用String類型中的方法equals(),所以返回異常,表明這是一個需要引起注意的地方;反過來 "".equals(str),""不爲null,而是一個字節長度爲0的字符串對象,其可以調用String類中的所有屬性和方法,所以不會拋出異常,一個(即:“”,是一個長度爲零的實例對象)不爲空,一個(即:null)爲空,所以會返回false;

再有,寫 str == null 沒有錯,但是最好養成 null == str 的習慣,因爲 null ==str 永遠不會產生空指針異常,但 str == null 的很容易產生,這也是極限編程建議的寫法!

謝謝閱讀!有更好解釋的朋友可以留言交流交流!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章