Java中有一個很常用的方法叫做equals方法,它是Object類的方法,用于比較兩個對象是否相等。除此之外,還有一個==運算符,它也可以用來比較兩個對象是否相等。
那么equals方法和==運算符有什么區別呢?
public class Example { public static void main(String[] args) { String str1 = "hello"; String str2 = new String("hello"); String str3 = "hello"; System.out.println(str1 == str2); //false System.out.println(str1 == str3); //true System.out.println(str1.equals(str2)); //true System.out.println(str1.equals(str3)); //true } }
從上面的代碼可以看出,如果用==運算符來比較兩個字符串對象str1和str2,結果為false,因為它們的地址不同;而用equals方法比較str1和str2,則結果為true,因為它們所表示的值相同。
而當比較str1和str3時,無論是用==運算符還是equals方法,結果都為true,這是因為Java字符串常量池會自動維護一個字符串值相等的對象只有一份的機制,因此str3會指向同樣值為"hello"的對象。
總的來說,==運算符比較的是兩個對象的地址,而equals方法比較的是兩個對象的值。但要注意,equals方法需要在相應的類中重寫,才能正確比較對象的值。