我正在经历一些奇怪的时刻。
ArrayList<Object> a = new ArrayList<Object>();
a.add(new Socket());
a.add(new Thread());
a.add("three");
a.add(a);
a.add(new Object());
for(Object output : a) {
System.out.println(output);
}
输出:
Socket[unconnected]
Thread[Thread-0,5,main]
three
[Socket[unconnected], Thread[Thread-0,5,main], three, (this Collection)]
java.lang.Object@615e7597
每次运行此代码时,新对象总是给出相同的十六进制字符串(Java文档中的
Integer.toHexString(hashCode())
),为什么会这样?为什么它不能每次都产生不同的字符串?或者它是因为可以重复使用同一个对象而这样做的吗?编辑:我尝试了多次执行Java应用程序。