When you use
System.out.println( ) by passing an object as an argument, the JRE invokes its
toString( ) method by default. If you haven't overridden this method, then you end up with very vague output. For example:
//Without overriding the toString() method
public class NoImplForToString {
int a, b;
//Constructor
public NoImplForToString(int x, int y) {
a = x; b = y;
}
//main method
public static void main(String args[]) {
System.out.println(new NoImplForToString(11, 65));
}
}
You might see this uninformative output:
NoImplForToString@650c437f
However, if you override the
toString() method and provide an implementation that you understand, it definitely will look betterboth for presentation and comprehension:
//Overriding the toString() method
public class ImplForToString {
int a, b;
//Constructor
public ImplForToString(int x, int y) {
a = x; b = y;
}
// Overriding toString
public String toString( ) {
return "ImplForToString[" + a + "," + b + "]";
}
//main methid
public static void main(String args[]) {
System.out.println(new ImplForToString(11, 65));
}
}
This version produces the more useful output:
ImplForToString[11,65]