gpt4 book ai didi

java - java中如何比较对象?

转载 作者:行者123 更新时间:2023-12-02 02:33:19 24 4
gpt4 key购买 nike

所以很长一段时间我认为对象是使用 equals() 进行比较的,它使用 hashcode() ,这意味着如果 2 个对象具有相同的哈希码,它将返回 true .

源代码中的 equals() 方法:

@see java.lang.System #identityHashCode
public boolean equals(Object obj) {
return (this == obj);
}

所以我创建了这个:

public static void main(String[] args) {
Dog rover = new Dog("Rover");
Dog german = new Dog("Rover2");

System.out.println("German: " + german + "\tRover: " + rover);
System.out.println(german.equals(rover));


}

我还将 hashCode() 重写为:

    @Override
public final boolean equals(Object obj) {
if (this == obj)
return true;
}

@Override
public int hashCode() {
//The main point of 0 is to check how equals actually work
return 0;
}

现在,即使两个对象都是@Dog0,打印语句也会打印 false。想知道为什么控制台:

German: Animal.Dog@0    Rover: Animal.Dog@0
false

最佳答案

您使用 equals 作为 this == obj 比较的“别名”这是错误的,这就是为什么它不会工作。

对象具有 equals 方法,因为 this == obj 仅当它实际上是同一对象(内存中的相同引用)时才返回 true。

您需要做的是手动比较 equals 方法中的属性,只有匹配时才返回 true。

关于java - java中如何比较对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46747478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com