1. 程式人生 > >關於使用equals()函式報 空指標 的錯誤問題

關於使用equals()函式報 空指標 的錯誤問題

這個問題  應該說是個人習慣問題,也可以說是對Java的String的機制問題熟不熟

假設兩個字串  

String  a = "hello" 這裡Java的機制首先在常量池裡面建立這個hello字串,然後在記憶體裡面建立一個地址,引用常量池裡面的這個hello值

String b = null;  這裡或者 String b;  這裡兩行申請  Java在記憶體裡面都申請了一個地址,但是不指向任何引用地址,或者說他沒有內容'

然後錯誤問題就是這樣產生的:

b.equals(a);   肯定報錯     :java.lang.NullPointerException  肯定是這個錯誤

a.equals(b); 這個結果就是false

那麼我們在程式碼中經常用到內容判斷是否相等:使用它的時候,經常是某個變數 equals 某個變數或者常量,這樣的寫法很容易報空指標的錯誤,

所以  以後 在比較String型別的兩個值內容是否相等的時候,我們把明確的一定有值的那個變數放在前面   比如常量

最常見的就是狀態碼的判斷,非同步執行緒裡面返回result  等等