色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java ==和equals的區(qū)別

錢淋西2年前7瀏覽0評論

在Java中,我們通常使用'=='運算符來比較兩個對象是否相等,但是有時候我們使用'equals'方法進行比較。這兩者之間有什么區(qū)別呢?

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 || !(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);
System.out.println(p1 == p2);        // false
System.out.println(p1.equals(p2));   // true
}
}

在上面的例子中,我們定義了一個Person類,并重寫了'equals'方法。在Test類中,我們創(chuàng)建了兩個Person對象p1和p2,并分別使用'=='和'equals'進行比較。

使用'=='運算符比較的是兩個對象的引用是否相同,也就是它們是否指向內(nèi)存中的同一塊地址。在上面的例子中,p1和p2雖然屬性值相同,但是它們并不是同一個對象,因此'=='運算符返回false。

而使用'equals'方法比較的是兩個對象的內(nèi)容是否相同,也就是屬性值是否相同。在上面的例子中,p1和p2雖然不是同一個對象,但是它們的屬性值相同,因此'equals'方法返回true。

在Java中,通常我們應該使用'equals'方法來比較兩個對象是否相等。但是需要注意的是,在使用'equals'方法進行比較時,需要確保被比較的兩個對象類型相同,并且重寫了'equals'方法。