今天做項目發現如下這個問題
看見別人用 if ("abc".equals(str)),然後自作聰明地認爲 if (str.equals("abc"))是等效的,就這麼寫
運行後發現出現空指針異常,然後用 debug 調試,發現了當 str != null的時候的確是沒有區別的
當 str ==null 的時候,str.equals("abc") 就會出現空指針異常了。
用 null.equals("abc") 直接不通過編譯的,所以這種寫法本身就是不合法的,即使用變量把 null "包裝"起來,能通過編譯,但運行起來還是錯誤的吧!