我正在调试我的Java程序,并且有一个名为“ SomeClass”的类的实例“ instance1”。当我评估变量“ instance1”时,它说结果= {SomeClass @ 816}。
“ @ 816”实际上是什么意思?
我知道不确定hashCode(),它是实例内存地址吗?如果是这样,如何在代码中“查看”实例地址?调用对象本身的哪种方法?
注意:我正在使用IntelliJ Idea
public class SomeClass {
private String name;
private int id;
@Override
public String toString() {
return this.name + this.id;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
String objName = ((SomeClass) o).name;
return this.name.equals(objName);
}
@Override
public int hashCode() {
return this.name.hashCode();
}
那个816属于每个java对象的identityHashCode
(方法System.identityHashCode()
)。
无论是[[您的类 替代还是hashcode()
方法都没有关系,因为identityHashCode()
将调用您的对象的自然hashcode()
方法。
为给定对象返回与将返回的哈希码相同的哈希码通过默认方法hashCode(),无论给定对象的类重写hashCode()