从我所知道的,jdk 8 now被分配为hashCode
对象的内存地址。hashCode作为JDK 8中的对象ref
而且,如果obj1
是obj2
,则obj1 = obj2
返回true,即它们坐在相同的存储位置。
但是,下面的代码执行的“其他” part--不是IF-STAT的“然后”的一部分而这正是我期望:
String h1 = "heya";
String h2 = new String ("heya");
System.out.println("hashCodes "+h1.hashCode()+" "+h2.hashCode());
if (h1 == h2)
System.out.println("yeah - the same ");
else System.out.println("nope-- difft objects ");
缺少什么我在这里?
TIA。
@Aeshang - 这是另一个问题 - 他们对我来说也是这样,但我会想知道一旦我通过这个。你说的是实例化一个新的字符串旁路实习该值,我同意。但是,运行n请参阅上面代码中的hashCode值。 – user3880721 2014-09-05 18:38:25
'String'!='Object'。不同的'hashCode'实现。 – 2014-09-05 18:38:38
本教程具有误导性。 'hashCode'不需要与内存地址有关。 – fgb 2014-09-05 18:46:19