时间:2010-07-26 14:23:38

标签: java

13 个答案:

答案 0 :(得分:166)

答案 1 :(得分:52)

一个巨大的区别是,如果您在空对象中调用toString(),您将获得NullPointerException,而使用String.valueOf()则可能无法检查是否为空。

答案 2 :(得分:44)

答案 3 :(得分:12)

答案 4 :(得分:8)

如果您查看String课程的源代码,则在致电Integer.toString()时会实际调用valueOf()

话虽如此,如果方法调用在编译时未被优化(可能是它们),Integer.toString()可能会更快一些。

答案 5 :(得分:8)

来自Java来源:

/**
 * Returns the string representation of the {@code int} argument.
 * <p>
 * The representation is exactly the one returned by the
 * {@code Integer.toString} method of one argument.
 *
 * @param   i   an {@code int}.
 * @return  a string representation of the {@code int} argument.
 * @see     java.lang.Integer#toString(int, int)
 */
public static String valueOf(int i) {
    return Integer.toString(i);
}

所以他们给出完全相同的结果,其中一个实际上调用了另一个。如果稍后可能更改类型,String.valueOf会更灵活。

答案 6 :(得分:3)

答案 7 :(得分:2)

要回答OP问题,它只是一个辅助包装器来进行另一个调用,并归结为样式选择,就是这样。我认为这里有很多错误的信息,Java开发人员可以做的最好的事情就是查看每种方法的实现,在任何IDE中只需一两次点击即可。您会清楚地看到String.valueOf(int)只是为您致电Integer.toString(int)

因此,绝对没有区别,因为它们都创建了一个char缓冲区,遍历数字中的数字,然后将其复制到一个新的String中并返回它(因此每个都创建一个String对象)。唯一的区别是一个额外的调用,编译器无论如何都会消除这个调用。

因此,除了代码一致性之外,重要的不是你所说的。至于关于null的注释,它需要一个原语,因此它不能为null!如果您没有初始化传递的int,则会出现编译时错误。因此,处理空值的方式没有区别,因为在这种情况下它们不存在。

答案 8 :(得分:1)

答案 9 :(得分:1)

Integer.toString(5)和String.valueOf(5)之间没有区别;

因为String.valueOf返回:

public static String valueOf(int i) {
    return Integer.toString(i);
}
public static String valueOf(float f) {
    return Float.toString(f);
}

等。

答案 10 :(得分:0)

使用String.valueOf()方法,您不必担心数据(无论是int,long,char,char [],boolean,Object),您只需调用:

  • static String valueOf()

使用唯一的语法String.valueOf()可以将作为参数传递的任何内容转换为String并返回..

否则,如果使用Integer.toString(),Float.toString()等(即SomeType.toString()),则必须检查要转换为字符串的参数的数据类型。 因此,最好使用String.valueOf()进行此类转换。

如果您的对象类数组包含不同的值,如Integer,Char,Float等,那么通过使用String.valueOf()方法,您可以轻松地将此类数组的元素转换为String形式。相反,如果你想使用SomeType.toString(),那么首先你需要知道它们的数据类型(可能是通过使用“instanceOf”运算符),然后只能继续进行类型转换。

String.valueOf()方法在调用时匹配传递的参数(无论是Integer,Char,Float等),并使用方法重载调用“valueOf()”方法,其参数匹配,然后在其中方法是直接调用相应的“toString()”方法..

因此,我们可以看到检查数据类型然后调用相应的“toString()”方法的开销如何被删除。我们只需要调用String.valueOf()方法,而不是关心我们想要转换为String的内容

结论:String.valueOf()方法的重要性仅在于再多一次调用。

答案 11 :(得分:0)

我的openion是值()总是被称为tostring()用于表示,因此对于原始类型valueof的rpresentaion是泛化的。默认情况下,java不支持数据类型,但是它定义了它的工作与objaect和类所做的所有事情cllas和made object .here Integer.toString(int i)创建一个仅对整数进行转换的限制。

答案 12 :(得分:-3)

toString()

  1. 存在于Object类中,通常覆盖在派生类
  2. 要调用toString()方法,必须将类型转换为适当的类。
  3. 的valueOf()

    1. String类中存在重载的静态方法。
    2. 处理原始类型和对象类型。

      Integer a = null;
      System.out.println(Integer.toString()) ; NUll pointer exception
      System.out.println(String.valueOf() ; give NULL as value
      
    3. 检查此链接非常好。 http://code4reference.com/2013/06/which-one-is-better-valueof-or-tostring/