1

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()); } } 
1
  • 5
    Have you tried running it? Or is your question why it prints out what it prints out? Commented Feb 25, 2011 at 7:56

2 Answers 2

4

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()) 
Sign up to request clarification or add additional context in comments.

Comments

1

It prints the class name followed by the @ symbol, followed by the unsigned hexadecimal representation of the object's hashcode.

2 Comments

No, that is what Object does. As every other class in Java extends object, every other class will do the same UNLESS it has overriden its toString() method. For example, if you print out an Integer, you wont get the @ symbol, followed by the hash, but rather what you would expect: the number contained in the Integer. Better look @romaintaz' s answer.
@baba: Do you see a overidden toString in OP's ExampleTest class?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.