-2

如果类的toString()方法Object返回对象的哈希码,那么hashCode()Object类的方法是做什么的呢?如果它还返回对象的哈希码,那么为什么方法返回toString()的值与方法返回的值相同hashCode()

4

2 回答 2

1

Object 是所有其他 Java 类的基类。这意味着所有类都隐式支持toStringhashCode。但是许多类覆盖了一个或两个,因此它们没有得到 Object 的默认实现。

例如,toStringDouble 对象将返回浮点数的有意义的默认格式版本,而hashCodedouble 对象将返回浮点值的散列版本,适用于在散列表中键入搜索。

toString主要用于支持调试打印。它返回的是开发人员认为对该特定对象类“最有意义”的任何内容。(对于 Object 没有太多可使用的,因此使用了类名与 hashCode 值的文本表示相结合。) hashCode另一方面,旨在促进基于散列的搜索,因此开发人员尝试生成一个数字,在比较不同的对象上很有可能不同,但在比较相等的对象上保证相同。

于 2013-08-31T22:36:13.340 回答
0

这里有几点:

toString()

返回 className@hashCode

hashCode()

仅返回类的 hashCode

hashCode 用于 Collections(Sets 和 Maps),它是 Java 在搜索时提高性能的一种方式,我不知道您是否知道如何使用 Collections 框架!但他们是这样工作的

当您尝试在集合中搜索对象时,它会开始查找对象的哈希码,当找到匹配项时,它会开始搜索相等的对象

这样,它不会搜索 1000 个对象的集合来尝试将每个对象与您的搜索进行比较,而是搜索哈希码(例如只能是 50 个),然后使用此哈希码搜索对象

关于如何使用 equals() 和 hashCode() 方法有很多规则,但无论如何它们都很容易

于 2013-09-01T00:52:32.747 回答