那麼,問題來了,咱們這樣的新手java,怎麼在工做和代碼中避免出現此類狀況呢?html
1) 從已知的String對象中調用equals()和equalsIgnoreCase()方法,而非未知對象。java
老是從已知的非空String對象中調用equals()方法。由於equals()方法是對稱的,調用a.equals(b)和調用b.equals(a)是徹底相同的,這也是爲何程序員對於對象a和b這麼不上心。若是調用者是空指針,這種調用可能致使一個空指針異常;以下:程序員
示例1: Object unknownObject = null; //錯誤方式 – 可能致使 NullPointerException if(unknownObject.equals("knownObject")){ System.err.println("This may result in NullPointerException if unknownObject is null"); } //正確方式 - 即使 unknownObject是null也能避免NullPointerException if("knownObject".equals(unknownObject)){ System.err.println("better coding avoided NullPointerException"); } 示例2: String unknownStr = null; //錯誤方式 – 可能致使 NullPointerException if(unknownStr .equals("knownObject")){ System.err.println("This may result in NullPointerException if unknownObject is null"); } //正確方式 - 即使 unknownObject是null也能避免NullPointerException if("knownStr".equals(unknownStr)){ System.err.println("better coding avoided NullPointerException"); }