【发布时间】:2015-03-30 18:40:22
【问题描述】:
一个关于String的小程序
String str1 = new String("Hello");
String str2 = "Hello";
System.out.println("=======================");
System.out.println("Srtr1 == Str2 :: " + (str1 == str2));
System.out.println("Srtr1.equals(Str2) :: " + str1.equals(str2));
输出: SRTR1 == STR2 :: 假 srtr1.equals(Str2) :: true
现在怎么可能?众所周知,如果两个对象的equals()为真,那么两个对象的HashCode()一定为真。但是如果 HashCode() 为真,那么 Equals() 可能为真,也可能不为真。
但是在上面的程序中,我们看到,两个String对象的equals()都是true,但是它们的hashCode()返回的是false。
为什么会这样???
【问题讨论】: