Java 中的 equals() 和 == 運算符是兩個常用的用于比較對象的方法,它們雖然都能夠比較兩個對象的值是否相等,但是它們的實現方式和比較規則不同。
== 運算符是比較兩個對象的引用是否相同,如果兩個對象的引用相同,則返回 true,否則返回 false。示例代碼如下:
String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); System.out.println(str1 == str2); // 返回 true,因為 str1 和 str2 指向的是同一個對象 System.out.println(str1 == str3); // 返回 false,因為 str1 和 str3 指向的是不同的對象,雖然它們的值都是相同的
而 equals() 方法則是比較兩個對象的值是否相同,如果兩個對象的值相同,則返回 true,否則返回 false。因此 equals() 方法基本上應該被所有對象覆蓋,以便用于對象的值比較。示例代碼如下:
String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); System.out.println(str1.equals(str2)); // 返回 true,因為 str1 和 str2 的值相同 System.out.println(str1.equals(str3)); // 返回 true,因為 str1 和 str3 的值相同
通過上述示例可以看出,== 運算符比較的是對象的引用,而 equals() 方法比較的是對象的值。因此,在使用時需謹慎使用,確保符合實際需求。