In Java, is there any difference between String.valueOf(Object)
and Object.toString()
?
Is there a specific code convention for these?
In Java, is there any difference between String.valueOf(Object)
and Object.toString()
?
Is there a specific code convention for these?
According to the Java documentation, String.valueOf()
returns:
if the argument is
null
, then a string equal to"null"
; otherwise, the value ofobj.toString()
is returned.
So there shouldn't really be a difference except for an additional method invocation.
Also, in the case of Object#toString
, if the instance is null
, a NullPointerException
will be thrown, so arguably, it's less safe.
public static void main(String args[]) {
String str = null;
System.out.println(String.valueOf(str)); // This will print a String equal to "null"
System.out.println(str.toString()); // This will throw a NullPointerException
}