这两者有什么区别:?
int a=20;
System.out.print(a.toString);
System.out.print(String.valueOf(a));
谢谢!
这两者有什么区别:?
int a=20;
System.out.print(a.toString);
System.out.print(String.valueOf(a));
谢谢!
两个区别:
您的示例,即使a.ToString更正为a.toString(),也将不起作用,因为a它是一个int,而不是一个对象,因此没有方法。你必须写new Integer(a).toString()。而String.valueOf调用会自动装箱,所以它会有一个toString.
如果a是一个对象引用,不同之处在于它String.valueOf(a)会给你"null"if ais null(显然它不会在你的情况下,因为它会a被int自动装箱),而a.toString()会抛出一个NullPointerException.
我们可以String.valueOf在 JDK 提供的源代码中看到:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
所以:有了String.valueOf,原语被自动装箱,并且对象引用被null-guarded。
String.valueOf可用于转换,其中toString每个对象的标准函数要么覆盖,要么从Object类继承以对自身进行字符串化。