2016-08-27 64 views
-3

工作,我嘗試下面的代碼:不等於沒有在Java

if (!object.equals(null)) { 
       object.setItem(object1.getTime()); 
} 

這裏,對象object1兩類對象。

問題是,它進入聲明null值。

+1

引用['equals()']的javadoc(https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-): *對於任何非空引用值'x','x.equals(null)'應該返回'false'。*當然,'! false'總是'true',所以'if'表達式是,*通過定義*,總是'true',這意味着**'if'塊總是被執行**。 – Andreas

+3

*「問題是它進入了一個null值的語句。」*不明白它是如何做到這一點的,因爲'object.equals(null)'表達式將產生'NullPointerException' if'object'爲空,所以if塊內的代碼永遠不會到達。 – Andreas

回答

5

對於在Java中零的比較,您使用對象!= NULL

if(object != null){ 
    // 
} 
+0

有關更多信息,請參見http://stackoverflow.com/questions/4501061/java-null-check-why-use-instead-of-equals – Sterling

+0

爲什麼上面的代碼不適用於對象。 – Abhishek

+0

每個對象都可以定義他們自己的行爲,「.equals()」將比較相等性。 – Sterling

1

Java中的equals()方法根據equals()方法的合同,你必須重寫比較兩個對象相等或它遵循對象類equals()方法合約。

在任何情況下,equals()方法都會比較兩個對象。 null不是一個對象。 null是一個引用類型,它的檢查應該使用object != null來完成。