【发布时间】:2017-11-12 15:25:59
【问题描述】:
我得到这两个对象的相同哈希码。
案例 1
String s=new String("ll");
String s1=new String(s);
但是对于案例 2,我得到了不同的哈希码
案例 2
String s=new String("ll");
String s1=new String("ll");
那么如果情况 1 是创建两个不同的对象还是只创建一个?
【问题讨论】:
-
案例2应该不有两个不同的哈希码。你一定是搞错了。
-
String 是 java 中一个特殊的不可变类,请阅读:docs.oracle.com/javase/8/docs/api/java/lang/String.html 应该清除它。如果你真的想看看它发生了什么,调试 yoru 代码并查看附加到每个对象的实例 id。