这两者有什么区别:?
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 a
is 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
类继承以对自身进行字符串化。