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() methodpublic 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:
[email protected]
However, if you override the toString() method and provide an implementation that you understand, it definitely will look better?both for presentation and comprehension:
//Overriding the toString() methodpublic 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]