答案 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),您只需调用:
使用唯一的语法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()
的valueOf()
处理原始类型和对象类型。
Integer a = null;
System.out.println(Integer.toString()) ; NUll pointer exception
System.out.println(String.valueOf() ; give NULL as value
检查此链接非常好。 http://code4reference.com/2013/06/which-one-is-better-valueof-or-tostring/