-1

这两者有什么区别:?

int a=20;
System.out.print(a.toString);
System.out.print(String.valueOf(a));

谢谢!

4

2 回答 2

3

两个区别:

  1. 您的示例,即使a.ToString更正为a.toString(),也将不起作用,因为a它是一个int,而不是一个对象,因此没有方法。你必须写new Integer(a).toString()。而String.valueOf调用会自动装箱,所以它会有一个toString.

  2. 如果a是一个对象引用,不同之处在于它String.valueOf(a)会给你"null"if ais null(显然它不会在你的情况下,因为它会aint自动装箱),而a.toString()会抛出一个NullPointerException.

    我们可以String.valueOf在 JDK 提供的源代码中看到:

    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }
    

所以:有了String.valueOf,原语被自动装箱,并且对象引用被null-guarded。

于 2013-02-16T12:21:40.613 回答
2

String.valueOf可用于转换,其中toString每个对象的标准函数要么覆盖,要么从Object类继承以对自身进行字符串化。

于 2013-02-16T12:23:54.927 回答