The valueOf()
method is useful when you do not know the value contained and it might throw a NullPointerException. It returns null and you can handle the same in your code as needed.
The toString() on the other hand does not handle it and throws the exception.
public class UsingValueOf{ public static void main(String args[]) { UsingValueOf usingValueOf = new UsingValueOf(); usingValueOf.proceed(); } private void proceed() { String nullString = null; try { //Using toString() will throw NullPointerException System.out.println(nullString.toString()); }catch(NullPointerException npe) { System.out.println("Exception: nullString is null"); } //Using valueOf() will NOT throw NullPointerException System.out.println(String.valueOf(nullString)); }}