欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java里和equal的區別

洪振霞1年前7瀏覽0評論

在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方法用來比較兩個對象的內容是否相等。