jdk的文档中对.toString()有说明:
String.valueOf(Object o) if the argument is null, then a string equal to “null “; otherwise, the value of obj.toString() is returned.
所以说,遇到这种特殊情况,就会出现异常
再看看String.valueOf():
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
可以看到,String.valueOf()内部调用的也是对象的 toString() 方法。
所以说如果你在使用中参数为null,调用toString方法就报异常了!而valueOf()方法因为做了是否为null的判断,如过是null就返回null,不是就返回toString()后的字符串,
所以选用String.valueOf()