if (!password2.equals(password1)|| "".equals(password1) || password1.equals(null))一句的錯誤解析:
首先,正確的寫法是if (null.equals(password1) | | "".equals(password1) || !password1.equals(password2))。
接著來解析錯誤的寫法:
主要的錯誤在password1.equals(null)這一句,這一句錯的原因是,password1放在外面,如果它是null,那麼就會報空指針異常。而且它應該第一個檢查,因為如果password1是null,那麼後面的就都不用檢查了。
! password2.equals(password1)同上,password2同樣可能發生空指標問題,所以要將password1放外面,因為前面已經檢測過了,所以如果執行這句,password1肯定不會為null。
另外,也可以寫成如下形式:if (StringUtils.isEmpty(password1) || !password1.equals(password2)),StringUtils.isEmpty(password1)就等同於null.equals(password1) || "".equals|| (password1),只是做了封裝而已。
附一句別人對StringUtils的說明:(轉)StringUtils 方法的操作對像是java.lang.String 類型的對象,是JDK 提供的String 類型操作方法的補充,並且是null 安全的(即如果輸入參數String為null 則不會拋出NullPointerException ,而是做了相應處理,例如,如果輸入為null 則返回也是null 等,具體可以查看原始程式碼)。
更多java equals()用法錯誤解析相關文章請關注PHP中文網!