相关疑难解决方法(0)

哈希码编号是否代表内存地址?

我了解到hashcode是一个唯一标识引用号,它是一个十六进制数.
我的疑问是,参考编号是否代表对象的内存地址?

例如:

Employeee e1=new Employee();
System.out.println(e1.hashcode());
Run Code Online (Sandbox Code Playgroud)

这段代码会返回我对象的内存地址吗?

java

7
推荐指数
1
解决办法
8038
查看次数

为什么java中的默认hashcode()不好?

如果我没记错的话,在Object()类型的对象的java中默认的hashCode()实现是返回对象的内存地址.当我们创建自己的类时,我读到我们想要覆盖hashCode(),这样当我们将它们插入到哈希相关的集合(如HashMap())时,它将正常工作.但为什么内存地址不好?

当然,我们将永远耗尽内存而你会发生冲突,但我认为这是一个问题的唯一情况是你处理TONS数据并且内存很少,然后它会开始影响性能,因为java中的哈希相关集合通过链接解决冲突(桶将链接到解析为相同哈希码/索引的值列表).

java hash hashcode

4
推荐指数
2
解决办法
2万
查看次数

hashcode是否返回内存地址?

可能重复:
什么是对象hashcode
hashCode()和identityHashCode()如何在后端工作?

我不是在讨论String类或任何其他重写hashcode的类.假设我只是创建了一个Object类的新对象,那么hashcode()无论如何都会identityHashCode(Object x)返回true,返回该对象的内存地址?

java hashcode

3
推荐指数
1
解决办法
6561
查看次数

如果两个对象的哈希码相同,为什么不意味着 o1.equals(o2)?

执行equals()hashCode()应遵循这些规则。

  1. 如果o1.equals(o2)o1.hashCode() == o2.hashCode()则应始终为真。
  2. 如果o1.hashCode() == o2.hashCode()是真的,这并不意味着那o1.equals(o2)将是真的。

如果o1.hashCode() == o2.hashCode()是真的。我知道,如果两个对象相等,那么这两个对象应该返回相同的哈希码。如果两个对象的哈希码相同,为什么不是这样o1.equals(o2)

java equals hashcode

-1
推荐指数
1
解决办法
398
查看次数

标签 统计

java ×4

hashcode ×3

equals ×1

hash ×1