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

java == 和equal

張吉惟1年前8瀏覽0評論

Java是一門面向對象的編程語言,至關重要的一部分是判斷兩個對象是否相等。在Java中,我們有兩種基本的相等性操作:==和equals()方法。

==操作符用于比較兩個變量的值是否相等,當然也可以用于比較兩個對象的引用是否指向同一個內存地址。例如:

int a = 5;
int b = 5;
if(a == b){
System.out.println("a等于b");
}
String str1 = new String("hello");
String str2 = new String("hello");
if(str1 == str2){
System.out.println("str1和str2引用同一個內存地址");
}

需要注意的是,在上面的例子中,雖然str1和str2所指向的字符串值相等,但因為它們是通過new關鍵字分別創建的,因此它們在內存中的引用是不同的,即它們引用了不同的內存地址。

相比之下,equals()方法是用于比較兩個對象的值是否相等。String和其他Java內置類型的equals()方法已經被重寫以支持值比較,但對于自定義對象來說,我們需要在類中手動重寫equals()方法。例如:

public class Person {
private int id;
private String name;
//getters and setters
@Override
public boolean equals(Object obj) {
if(obj == null) {
return false;
}
if(!(obj instanceof Person)) {
return false;
}
Person comparedPerson = (Person)obj;
return (this.id == comparedPerson.getId() && this.name.equals(comparedPerson.getName()));
}
}
Person person1 = new Person(1, "Tom");
Person person2 = new Person(1, "Tom");
if(person1.equals(person2)){
System.out.println("person1和person2的值相等");
}

需要注意的是,為了在比較對象值時確保正確性,equals()方法必須重寫hashCode()方法。