從我所知道的,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