我很好奇为什么Object.toString()
返回这个:
return getClass().getName() + "@" + Integer.toHexString(hashCode());
与此相反:
return getClass().getName() + "@" + hashCode();
将哈希码显示为十六进制而不是十进制有什么好处?
Object.hashCode
用于根据对象所在的内存位置进行计算。内存位置几乎普遍显示为十六进制。
默认的返回值toString
不是对哈希码非常感兴趣,而是以一种独特的方式来标识对象以进行调试,而哈希码可以很好地用于标识(实际上,类的组合)名称+内存地址确实是唯一的;虽然不能保证哈希码是唯一的,但它通常很接近)。
问题内容: 我正在Python控制台中进行大量工作,其中大部分是指地址,我希望以十六进制形式查看。 因此,如果我只是进入控制台以查看其值时,我希望python用代替。 我知道我可以输入以十六进制形式查看它,但是我正在寻找某种python控制台选项来使其自动执行此操作。像这样的东西存在吗?谢谢! 问题答案: 常规Python解释器将调用来真正显示您输入的表达式。您可以将其替换为可以完全显示所需内容的
我在airport.java中有一个枚举类 和Test.java中的一个测试类
问题内容: 如果执行: 你可能会看到类似的输出 我的问题:是否存在显示hashCode号的任何特定原因? 问题答案: 对象哈希码是唯一的标准标识符,可能允许您在Java中区分不同的任意对象。它不一定是唯一的,但是相等的对象通常具有相同的哈希码。 默认toString()方法显示了对象类及其哈希码,因此您可以希望区分不同的对象实例。由于默认情况下也会在错误消息中使用它,因此这很有意义。 有关更多信息
问题内容: 如果没有覆盖该方法,默认的实现是什么? 问题答案: 然后,此类从其祖先之一继承。如果它们都不覆盖它,则使用Object.hashCode。 从文档: 在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。(通常通过将对象的内部地址转换为整数来实现,但是JavaTM编程语言不需要此实现技术。) 因此默认实现是特定于JVM的
我正在尝试将十六进制数据添加到十六进制字符串中,我需要使用它们的IEEE表示将浮点数添加到该字符串中。对于整数,这很简单: 其中value是数字的VARCHAR,params是包含十六进制字符串的VARCHAR。这个技巧适用于整数,但对于十进制,它会截断十进制部分,并将整数部分转换为十六进制整数。如果十进制的大小是固定的(java float或double),如何将值转换为十进制数的IEEE浮点表
问题内容: 有时,我看到用十六进制而不是十进制数字定义的整数常量。这是我从GL10类中学到的一小部分: 显然,用而不是定义起来更简单,那么也许会有一些性能提升吗?我绝对不这么认为,因为那以后更改它应该是编译器的工作。 问题答案: 可能是为了组织和视觉上的清洁。基数16与二进制的关系比基数10更简单,因为在基数16中,每个数字正好对应于四个位。 请注意,在上述常量中,常量是如何与许多数字组合在一起的