Java 大家都不陌生,那么你了解 ?==
? 和 ?equals
? 兩者的差別嘛?本篇文章告訴你
?==
?是 Java 的一種操作符,有兩種比較方式
對(duì)基本數(shù)據(jù)類型來(lái)說(shuō),?==
?的判斷是兩邊值是否相等
public class DoubleCompareAndEquals {
Person person1 = new Person(24,"boy");
Person person2 = new Person(24,"girl");
int c = 10;
private void doubleCompare(){
int a = 10;
int b = 10;
System.out.println(a == b);
System.out.println(a == c);
System.out.println(person1.getId() == person2.getId());
}
}
而對(duì)于引用類型來(lái)說(shuō),?==
? 判斷是兩邊引號(hào)是否相等,就是兩個(gè)對(duì)象是否都指向同一個(gè)內(nèi)存區(qū)域
private void equals(){
System.out.println(person1.getName().equals(person2.getName()));
}
?equals
? 是 Java 中任何對(duì)象的父類,就是 Object 類定義的方法。?equals
?只能進(jìn)行對(duì)象比較,表示的是引用雙方值是否為相等。這里要記住,不是說(shuō) ?==
? 比較的就是引用是否相等,?equals
?比較的是值,需要區(qū)分來(lái)說(shuō)。
?equals
? 作對(duì)象間的比較有以下特性
- ?
自反性
?:對(duì)任何非空引用(x)來(lái)說(shuō),x.equals(x) 會(huì)返回 true - ?
對(duì)稱性
?:對(duì)任何非空引用(x)和(y)來(lái)說(shuō),如果 x.equals(y)是 true,則 y.equals(x) 也為 true - ?
傳遞性
?:對(duì)任何非空引用值來(lái)說(shuō),有三個(gè)值:x、y 和 z,如果 x.equals(y) 返回 true,y.equals(z) 返回 true,那么 x.equals(z) 也應(yīng)該返回 true。 - ?
一致性
?:對(duì)任何非空引用 x 和 y 來(lái)說(shuō),如果 x.equals(y) 相等的話,那么它們必須始終相等。 - ?
非空性
?:對(duì)任何非空引用的值 x 來(lái)說(shuō),x.equals(null) 必須返回 false。
以上就是小編為你整理的關(guān)于Java 中 == 和 equals 區(qū)別是什么? 的全部?jī)?nèi)容