For any type of a (int, float, Object, Integer, etc), ""+a is equal to this in
Java 6:
For all object types "append(a)" is equal to "append(String.valueOf(a))" with String.valueOf being somewhat like this:
So if you do ""+a, you also call a.toString(), but with another String (""), a StringBuilder, and the final String. So yes, a.toString() is more efficient.
If you want to be safe, you can always call String.valueOf(a). This will also handle the cases where a is null, or where a is a primitive type (String.valueOf has been overloaded for these).