在 Java 中,== 運(yùn)算符和 equals() 方法有著不同的作用:
== 運(yùn)算符:
== 用于比較兩個變量的值是否相等(對于基本數(shù)據(jù)類型)或者比較兩個對象的引用是否指向同一個內(nèi)存地址(對于引用類型)。
對于基本數(shù)據(jù)類型(例如 int, char, boolean 等),== 比較的是它們的值是否相等。
對于引用類型(例如對象),== 比較的是對象的引用地址是否相同,即是否指向內(nèi)存中的同一個對象。
int a = 5;
int b = 5;
System.out.println(a == b); // 輸出 true,因?yàn)?a 和 b 的值相等
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1 == str2); // 輸出 false,因?yàn)?str1 和 str2 的引用地址不同
equals() 方法:
equals() 方法是用于比較兩個對象的內(nèi)容是否相等。在 Object 類中,equals() 方法的默認(rèn)實(shí)現(xiàn)是比較對象的引用地址(即與 == 運(yùn)算符相同)。
很多類(例如 String、Integer 等)都重寫了 equals() 方法,使其用于比較對象的內(nèi)容是否相等,而不是比較引用地址。
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2)); // 輸出 true,因?yàn)?String 類重寫了 equals 方法,比較的是內(nèi)容是否相等
總結(jié):
== 比較的是變量(或?qū)ο笠?的值或引用地址是否相等。
equals() 方法比較的是對象的內(nèi)容是否相等。但需要注意,某些類需要重寫 equals() 方法以實(shí)現(xiàn)內(nèi)容比較,否則默認(rèn)是比較引用地址。