我知道当我们传递对象时,我们将其引用作为值传递。但是你得到的这个值是使用hashcode()
正确的方法(根据我的测试是一样的)?既然hashcode()
不是内存地址,也不能保证一直获取唯一值,那么在传递对象的时候会不会发生碰撞之类的奇怪事情呢?
(假设hashcode()
没有被覆盖,即它返回与 相同的值System.identityHashCode()
)
三个像这样的问题很多,但我找不到相关资源来讨论传递的值是什么以及如何获得它?
编辑:
这是我的测试。默认toSting()
使用hashCode()
内部并将其转换为十六进制值。那么当我们传递对象时,这是传递的值吗?或者 java 做了什么来跟踪所有的对象(被传递)所以不会有任何引用冲突?
Object o = new Object();
System.out.println(o);
System.out.println(o.toString()); //both prints same thing - java.lang.Object@10385c1