Output of System.out.println(object)

后端 未结 4 822
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-29 09:35

I want to know what exactly the output is when I do the following.

class Data {
  int a = 5;
}

class Main {
  public static void main(String[] args) {
    d         


        
相关标签:
4条回答
  • 2020-11-29 10:15

    That code calls the default toString() implementation of the Object class, that is:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    
    0 讨论(0)
  • 2020-11-29 10:22

    What happens is that the default toString() method of your class is getting used. This method is defined as follows:

    The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

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

    The value returned by the default hashCode() method is implementation-specific:

    As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)

    0 讨论(0)
  • 2020-11-29 10:23

    When you print an instance of your class, that does not override the toString method, then the toString method of Object class is used. Which prints an output in the form: -

    data@1ae73783
    
    • The first part of that output shows the type of the object.

    • And the 2nd part is the hexadecimal representation of the hashCode of your object.

    Here's the source code of Object.toString() method, that you can find in the installation directory of your jdk, under src folder: -

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    
    0 讨论(0)
  • 2020-11-29 10:24

    The Javadoc for hashCode() and toString() in the Object class should be able to clarify this for you.

    0 讨论(0)
提交回复
热议问题