# Java: Converting Anything to String

Summary: Converting any data to strings is easy. You can do almost everything with concatenation, but can get more control using some of the alternatives.

## Converting numbers to strings - See Converting Numbers to Strings

There are many specialized issues with regard to converting numbers (precision, exponents, currency, locale, ...), which are covered in Converting Numbers to Strings.

## Summary of conversion alternatives

- Concatenation (+): Concatenate anything to a string and it will automatically be converted to string.
- `toString()` is universally used as the method for converting any object into a string.
- `printf()` was added in Java 5 to use a format for conversion. Altho it's primarily used with numbers, it also can be applied to objects of other classes. This isn't discussed here.
- No conversion required. Some common system methods will take any type and convert it, eg, `System.out.println()`.

## Concatenation (+)

The most common idiom to convert something to a string is to concatenate it with a string. If you just want the value with no additional text, concatenate it with the empty string, one with no characters in it ("").

If either operand of a concatenation is a string, the other operand is converted to string, regardless of whether it is a primitive or object type.

    Card c = ...;   // Assume Card is a class that defines a playing card.
    String s;
    . . .
    s = c;             // ILLEGAL
    s = "" + c;        // Might assign "Three of Hearts" to s
    s = c + " is trouble";  // Assigns "Three of Hearts is trouble" to s.

This conversion to string is made by calling the object's `toString()` method.

## toString() method - Define it for your classes

When Java needs to convert an object to a String, it calls the object's `toString()` method. Because every class (object type) has the class `Object` as an ancestor, every class inherits Object's `toString()` method. This will do something to generate a string from an object, but it will not always be very useful. If the child class doesn't override `toString()`, the default probably won't print anything interesting. Just as many of the Java library classes override `toString()` to produce something more useful, you should also override `toString()` in your classes.

## Enums

[There should be something here about Java 5's enums.]