Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the number that it shows when I print out the **this** pointer in java?

Tags:

java

This program

public class HelloWorld{
    public void testFunc(){
        System.out.println("Class = "+this);
    }

    public static void main(String[] args){
        HelloWorld hw = new HelloWorld();
        System.out.println("Hello, World");
        hw.testFunc();
    }
}  

gives me this output:

Hello, World
Class = HelloWorld@7c6768

What does @7c6768 after HelloWorld in the second line mean?

like image 945
user13267 Avatar asked Jul 26 '13 10:07

user13267


3 Answers

Object's toString() is implemented as follows:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Since your HelloWorld class doesn't override it, this is the method called.

like image 86
jlordo Avatar answered Nov 15 '22 09:11

jlordo


The toString() method returns a string representation of the object.

In general, the toString() method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

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())
like image 45
MayurB Avatar answered Nov 15 '22 07:11

MayurB


As per Docs of toString() method in Object class

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:

When

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

When you call toString() on object ,If you ovveride like below ,you get your own implementation

 @Override
  public String toString() {
     //return something 
  }

Otherwise gives the default implementation,which you are seeing right now

From Object class Source code

Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

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

Returns:
a string representation of the object.


    public String  toString() {
         return getClass().getName() + "@" + Integer.toHexString(hashCode());
     }
like image 21
Suresh Atta Avatar answered Nov 15 '22 08:11

Suresh Atta