Skip to Main Content
Java Cookbook
book

Java Cookbook

by Ian F. Darwin
June 2001
Intermediate to advanced content levelIntermediate to advanced
888 pages
21h 1m
English
O'Reilly Media, Inc.
Content preview from Java Cookbook

Printing Objects: Formatting with toString( )

Problem

You want your objects to have a useful default format.

Solution

Override the toString( ) method inherited from java.lang.Object.

Discussion

Whenever you pass an object to System.out.println( ) or any equivalent method, or involve it in string concatenation, Java will automatically call its toString( ) method. Java “knows” that every object has a toString( ) method, since java.lang.Object has one and all classes are ultimately subclasses of Object. The default implementation, in java.lang.Object, is neither pretty nor interesting: it just prints the class name, an @ sign, and the object’s hashCode( ) value (see Section 8.4). For example, if you run this code:

/* Demonstrate toString(  ) without an override */
public class ToStringWithout {
    int x, y;

    /** Simple constructor */
    public ToStringWithout(int anX, int aY) {
        x = anX; y = aY;
    }

    /** Main just creates and prints an object */
    public static void main(String[] args) { 
        System.out.println(new ToStringWithout(42, 86));
    }
}

you might see this uninformative output:

ToStringWithout@990c747b

So, to make it print better, you should provide an implementation of toString( ) that prints the class name and some of the important state in all but the most trivial classes. This gives you formatting control in println( ), in debuggers, and anywhere your objects get referred to in a String context. Here is the previous program done over with a toString( ) method:

/* Demonstrate toString( ) with an ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Practical Cloud-Native Java Development with MicroProfile

Practical Cloud-Native Java Development with MicroProfile

Emily Jiang, Andrew McCright, John Alcorn, David Chan, Alasdair Nottingham
Distributed Computing in Java 9

Distributed Computing in Java 9

Raja Malleswara Rao Malleswara Rao Pattamsetti

Publisher Resources

ISBN: 0596001703Supplemental ContentCatalog PageErrata