在Java中,我們有時需要比較兩個對象是否相等。這時候就用到了equals方法和"=="運算符。雖然它們都可以實現相等性比較,但它們的使用場景不同。
先來看一下"=="運算符。"=="運算符是Java中的比較操作符,用于比較兩個對象的引用地址是否相同。如果同一個對象被賦給兩個不同的引用變量,那么它們的引用地址是相同的,此時"=="運算符返回true,否則返回false。
public class Test { public static void main(String[] args) { String s1 = "hello"; String s2 = "hello"; System.out.println(s1 == s2); // true String s3 = new String("hello"); String s4 = new String("hello"); System.out.println(s3 == s4); // false } }
從上面的代碼可以看出,s1和s2所引用的對象的引用地址是相同的,而s3和s4所引用的對象的引用地址是不同的,因此,s1 == s2返回true,而s3 == s4返回false。
然而,有時候我們需要比較對象的內容是否相等。此時就可以使用equals方法。equals方法是Object類中的方法,所有的Java對象都可以調用該方法,用來比較兩個對象是否相等。當我們沒有重寫equals方法時,它默認比較的是對象的引用地址,與"=="運算符的效果相同。
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public boolean equals(Object obj) { if (obj == null) { return false; } if (this == obj) { return true; } if (!(obj instanceof Person)) { return false; } Person p = (Person)obj; return this.name.equals(p.name) && this.age == p.age; } } public class Test { public static void main(String[] args) { Person p1 = new Person("Tom", 20); Person p2 = new Person("Tom", 20); Person p3 = new Person("John", 25); System.out.println(p1.equals(p2)); // true System.out.println(p1.equals(p3)); // false } }
從上面的代碼可以看出,我們重寫了Person類的equals方法,用來比較兩個Person對象的name和age屬性是否相等。
綜上所述,"=="運算符用來比較兩個對象的引用地址是否相等,而equals方法用來比較兩個對象的內容是否相等。
上一篇ajax加token例子
下一篇java里%lf和%f