Reputation: 488
What does the following System.out print in the following code??
class ExampleTest {}
public class Test {
public static void main(String ... strings){
ExampleTest et=new ExampleTest();
System.out.println(et);
System.out.println(new ExampleTest());
}
}
Upvotes: 1
Views: 218
Reputation: 81627
When you give any object to a print method, such as in your code, it will call the toString()
method.
In your example, your ExampleTest
class does not override this toString()
method, so it will call the Object.toString()
:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
So the output will be the full name of the class, and the result of the hashCode
of this class.
Here is what the Javadoc of java.lang.Object.toString() says about that:
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())
Upvotes: 4
Reputation: 455122
It prints the class name followed by the @
symbol, followed by the unsigned hexadecimal representation of the object's hashcode.
Upvotes: 1