If I am printing an object of the class then it is printing the toString()
method implementation even I am not writing the toString()
method so wha
You're not explicitly calling toString()
, but implicitly you are:
See:
System.out.println(foo); // foo is a non primitive variable
System is a class, with a static
field out, of type PrintStream. So you're calling the println(Object) method of a PrintStream
.
It is implemented like this:
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
As we see, it's calling the String.valueOf(Object) method.
This is implemented as follows:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
And here you see, that toString() is called.