当前位置: 首页 > 面试题库 >

Java为什么默认的Object.toString()包含哈希码?

晋俊贤
2023-03-14
问题内容

如果执行:

System.out.println(someObj.toString());

你可能会看到类似的输出

someObjectClassname @ hashcodenumber

我的问题:是否存在显示hashCode号的任何特定原因?


问题答案:

对象哈希码是唯一的标准标识符,可能允许您在Java中区分不同的任意对象。它不一定是唯一的,但是相等的对象通常具有相同的哈希码。

默认toString()方法显示了对象类及其哈希码,因此您可以希望区分不同的对象实例。由于默认情况下也会在错误消息中使用它,因此这很有意义。

有关更多信息,请参见hashCode()方法说明。



 类似资料:
  • 问题内容: 当我使用gcc编译非常简单的源文件时,不必指定标准包含文件(例如stdio或stdlib)的路径。 GCC如何知道如何找到这些文件? 它内部是否具有硬连线的路径,还是会从其他OS组件获取路径? 问题答案: 为了弄清楚/ 所使用的默认路径及其优先级,您需要检查以下命令的输出: 对于 C : 对于 C ++ : 这归功于 Qt Creator团队 。

  • 问题内容: 建立 Java不为JCE无限强度策略文件提供现成的支持 这样可以防止用户使用AES-256,这是广泛使用的加密标准中最大的密钥大小 不包括策略文件会导致许多问题: 意外的异常 不满意的解决方法 只需安装它们 使用不同的实现 使用可能违反Java许可协议的反射 JRE更新后损坏 安装后混乱 所有这些噪音导致程序损坏和/或错误 题 为什么不提供这些服务,将其视为败类? 问题答案: 事实证明

  • 问题内容: 我很好奇为什么返回这个: 与此相反: 将哈希码显示为十六进制而不是十进制有什么好处? 问题答案: 用于根据对象所在的内存位置进行计算。内存位置几乎普遍显示为十六进制。 默认的返回值不是对哈希码非常感兴趣,而是以一种独特的方式来标识对象以进行调试,而哈希码可以很好地用于标识(实际上,类的组合)名称+内存地址确实是唯一的;虽然不能保证哈希码是唯一的,但它通常很接近)。

  • 从原理到应用分析什么是哈希? 一、什么是哈希? 哈希(hash):将任意长度的输入(关键字),通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值,通常哈希值代表了关键字的存储位置。 但是为什么要这样做呢?或者说,哈希是怎样来的呢? 哈希的出现解决了两个问题:存储和搜索。 1. 存储(数据结构):如果在容器中保存对象及其关联的键,并且不用键

  • 问题内容: 我正在阅读Java 1.6 API提供的HashMap类的代码,无法完全理解以下操作的需要(位于put和get方法的主体中): 该方法具有以下主体: 通过对提供的哈希码执行位操作,可以有效地重新计算哈希。即使API声明如下,我也无法理解这样做的必要性: 这很关键,因为HashMap使用2的幂的哈希表,否则哈希表在低位无差异时会遇到冲突。 我确实知道键值参数存储在数据结构数组中,并且该数

  • 问题内容: 某些哈希表方案(例如布谷鸟哈希或动态完美哈希)依赖于通用哈希函数的存在以及能够收集表现出冲突的数据并通过从通用哈希函数系列中选择一个新的哈希函数来解决这些冲突的能力。 。 不久前,我试图在以杜鹃哈希为后盾的Java中实现哈希表,并遇到了麻烦,因为尽管所有Java对象都有一个函数,但返回的值对于每个对象都是固定的(当然,除非对象更改)。这意味着如果没有用户提供外部家族的通用哈希函数,就不