sam*_*ara 5 java hash-code-uniqueness object hashcode
我知道当我们传递对象时,我们将其引用作为值传递.但是你得到的这个值是hashcode()正确使用方法(根据我的测试,它是相同的)?既然hashcode()不是内存地址而且不能保证始终获得唯一值,那么在传递对象时是否会发生像碰撞这样的奇怪事情?
(假设hashcode()没有被覆盖,即它返回相同的值System.identityHashCode())
有三个人很喜欢这个问题,但我找不到一个相关的资源来讨论传递的价值是什么以及你如何得到它?
编辑:
这是我的测试.默认值toSting()使用hashCode()inside并将其转换为十六进制值.所以当我们传递对象时,这是传递的值吗?或者java做什么来跟踪所有对象(被传递),这样就不会有任何引用冲突?
Object o = new Object();
System.out.println(o);
System.out.println(o.toString()); //both prints same thing - java.lang.Object@10385c1
Run Code Online (Sandbox Code Playgroud)
hashcode()与Java的内部存储器没有任何关系.它只是一个应该返回可以表示对象的唯一值的方法.
现在,只有这样才能获得表示对象的唯一值的好方法是使用其内部存储器地址.这就是默认实现的hashcode()功能.但是hashcode() 使用内存地址的事实并不意味着hashcode() 定义内存地址.
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |