【问题标题】:Explanation of toString method output and difference between toString out and hashCode outputtoString方法输出的解释以及toString out和hashCode输出的区别
【发布时间】:2020-12-10 06:51:32
【问题描述】:
public class ObjectClass {
    public static void main(String[] args) {
        Demo dm = new Demo();
        Object obj = dm.getObject();
        System.out.println("Class name :: "+obj.getClass());
        System.out.println("To String " + dm.toString());
        System.out.println("HashCode "+ dm.hashCode());
    }
}

输出

    Class name :: class newTopic.Object.Demo
    To String :: newTopic.Object.Demo@2a139a55
    HashCode :: 705927765

那个Demo@2a139a55和hascode有什么区别705927765

【问题讨论】:

  • also: toString 返回对象的“字符串表示”。 hashCode 是与对象关联的 int 数字

标签: java string difference object-class


【解决方案1】:

如果您查看ObjecttoString() 的Javadoc,您会看到:

Object 类的 toString 方法返回一个字符串,该字符串由对象作为其实例的类的名称、at 符号字符“@”和对象哈希码的无符号十六进制表示形式组成。换句话说,这个方法返回一个字符串等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())

因此dm.toString() 返回:

newTopic.Object.Demo      @           2a139a55

getClass().getName()  +  '@'  + Integer.toHexString(   705927765   )
                                                     dm.hashCode()

【讨论】:

  • 是的,感谢您的澄清。其实我不是这样想的,所以我很困惑。
【解决方案2】:

这两个是Object类的方法。如果你不覆盖,那么这些将被自动继承。这里我将尝试解释 3 个方法,toString()、equals() 和 HashCode()。

  1. toString - 它有助于以字符串的形式表示对象。 (欲了解更多信息 - https://www.geeksforgeeks.org/object-tostring-method-in-java/ 请点击此链接)。

  2. equals and HashCode - equals 方法用于比较两个对象的相等性,HashCode 有助于生成对象的 hashCode。两者一起对 HashMap 很有帮助(大部分)。 要获取更多信息,请阅读 HashMap 的内部实现。 https://www.geeksforgeeks.org/internal-working-of-hashmap-java/

希望对你有帮助。

【讨论】:

  • equals 方法用于比较两种方法。不,不是。它用于检查两个对象的相等性。如果没有被覆盖,它只会在引用检查 (==) 返回 true 时返回 true,因为这是从 Object 类继承的基本实现。 “HashCode 有助于生成类的 hashCode”。不,不是。它是 hashCode,它不会创建类的代码,而是创建类的特定实例的代码。如果一个类的每个实例的值都相同,那么代码就和素食主义者大会上的汉堡摊一样有用。
  • 即便如此,声明 hashCode 生成 hashCode ... 并不能真正解释生成 hashCode 的用途。
  • 我认为这些链接非常有用。这不是完全正确的答案,这里只是我分享了一些信息和链接。在那里你可以详细阅读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 2011-09-13
  • 2021-11-27
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
相关资源
最近更新 更多