那么,问题来了,咱们这样的新手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"); }