Java 解释toString方法输出以及toString out和hashCode输出之间的差异

Java 解释toString方法输出以及toString out和hashCode输出之间的差异,java,string,difference,object-class,Java,String,Difference,Object Class,输出 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 S

输出

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());
    }
}

这两者之间有什么区别Demo@2a139a55和hascode705927765

如果您查看
对象的
toString()
的Javadoc,您将看到:

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

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

因此
dm.toString()
返回:

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

这两个是对象类方法。如果不重写,则这些将自动继承。这里我将尝试解释3个方法,toString()、equals()和HashCode()

  • toString—它有助于以字符串的形式表示对象。(有关更多信息,请访问此链接)


  • equals和HashCode-equals方法用于比较两个对象的相等性,HashCode有助于生成该对象的HashCode。两者在HashMap中都很有用(大部分)。 要获得更多信息,请阅读HashMap的内部实现。


  • 我希望这将对您有所帮助。

    另外:toString返回对象的“字符串表示”。hashCode是与objectequals方法关联的整数,用于比较两个方法。不,不是。它用于检查两个对象的相等性。如果未重写,则仅当引用检查(=)返回true时,才会返回true,因为这是从对象类继承的基本实现。“HashCode有助于生成类的HashCode”。不,不是。它是hashCode,它不创建类的代码,而是为类的特定实例创建代码。如果一个类的每个实例都有相同的值,那么代码就和素食者大会上的汉堡摊一样有用。。。并没有真正解释生成hashcode对什么有用。我认为链接非常有用。这不是完全正确的答案,这里我只是分享了一些信息和链接。你可以在那里详细阅读。是的,谢谢你的澄清。实际上我不是那样想的,所以我很困惑。
    newTopic.Object.Demo      @           2a139a55
    
    getClass().getName()  +  '@'  + Integer.toHexString(   705927765   )
                                                         dm.hashCode()