当前位置: 首页 > 知识库问答 >
问题:

默认的object.toString()不是追加了hashCode()吗?

越英范
2023-03-14

我在airport.java中有一个枚举类

package test;

public enum Airport {
    PHX,
    LAX,
    SFO,
    NRT,
    SIN;

    Airport() {
    }
}

和Test.java中的一个测试类

package test;

public class Test {

    public static void main(String[] args) {
        Airport a = Airport.PHX;
        System.out.println(a);
        System.out.println(String.valueOf(a));
        System.out.println(a.name());
        System.out.println(a.toString());
        System.out.println(a.name() + '@' + Integer.toHexString(a.hashCode()));
    }

}
PHX
PHX
PHX
PHX
PHX@15db9742
PHX
PHX
PHX
PHX@15db9742
PHX@15db9742

共有1个答案

仲孙飞文
2023-03-14

这确实是toString()的默认实现。但是,java.lang.enum,所有enum的隐式基类通过返回其名称来重写ToString()

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

  • 问题内容: 如果没有覆盖该方法,默​​认的实现是什么? 问题答案: 然后,此类从其祖先之一继承。如果它们都不覆盖它,则使用Object.hashCode。 从文档: 在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。(通常通过将对象的内部地址转换为整数来实现,但是JavaTM编程语言不需要此实现技术。) 因此默认实现是特定于JVM的

  • 问题内容: 如果执行: 你可能会看到类似的输出 我的问题:是否存在显示hashCode号的任何特定原因? 问题答案: 对象哈希码是唯一的标准标识符,可能允许您在Java中区分不同的任意对象。它不一定是唯一的,但是相等的对象通常具有相同的哈希码。 默认toString()方法显示了对象类及其哈希码,因此您可以希望区分不同的对象实例。由于默认情况下也会在错误消息中使用它,因此这很有意义。 有关更多信息

  • 问题内容: 我试图理解Java对象的hashCode(),并看到Java对象的hashCode()方法的以下代码: 因此,该类即:将隐式扩展该类。 主班: 正如隐式扩展类一样,因此它将具有类的方法。 我调用了on 对象,但由于尚未覆盖on ,因此从理论上讲它应该调用class的。 我的疑问是: 由于Object类没有任何实现,因此如何计算任何对象的哈希码? 就我而言,当我运行该程序时,它返回的哈希

  • 问题内容: 我刚刚安装了CentOS,Apache和PHP。当我访问我的网站http://example.com/myapp/时,它显示为“禁止访问”。默认情况下,它不会加载index.php文件。 当我访问http://example.com/myapp/index.php时,它可以正常工作。 任何想法如何解决该问题? 问题答案: Apache需要配置为将index.php识别为索引文件。 实现

  • 我对Liquibase有点陌生。我遇到了一个场景,在一个中,它试图首先添加默认值,而不是旁边的空约束。 但这里的问题是两者都