String obj1 = new String("abc");
String obj2 = new String("abc");
if(obj1.hashCode() == obj2.hashCode())
System.out.println("hashcode()");
if(obj1==obj2))
System.out.println("==");
它打印hashcode(),但为什么它不打印==作为两个对象的哈希码是相同的?
具有相同的哈希码并不意味着引用指向同一个对象?
答案 0 :(得分:0)
相同的hashCode并不代表同一个对象,请查看the general contract of hashcode
hashCode的一般合约是:
答案 1 :(得分:0)
obj1 == obj2
将返回false
,因为“==”会比较引用而不是值,您的对象都具有相同的值但存储在不同的内存部分中。
.equals()
会比较对象的值。
所以:
obj1 == obj2
(假)
obj1 == obj1
(真)