If an object supports a public toString method that takes no parameters and returns a String object, that method is invoked whenever a + or += expression has an object of that type where a String object is expected.
All primitive types are implicitly converted to String objects when used in String expressions.