我可以使用以下命令将整数转换为字符串
String s = "" + 4; // correct, but poor style
or
String u = Integer.toString(4); // this is good
我可以使用以下命令将双精度值转换为字符串
String s = "" + 4.5; // correct, but poor style
or
String u = Double.toString(4.5); // this is good
我可以使用String s = "" + data
方法将整型或双精度型转换为字符串。而如果我想使用另一种方法,使用toString()
,我必须使用每种数据类型的包装类。那么,为什么在中提到第一种方法很差,而第二种方法更好。哪种方法更好?为什么?
发布于 2011-07-13 20:41:28
我会用
String.valueOf(...)
您可以对所有类型使用相同的代码,但不需要丑陋且毫无意义的字符串连接。
请注意,它还准确地说明了您想要的内容-与给定原始值相对应的字符串值。与"" + x
方法相比,在这种方法中,即使不打算连接任何内容,也要应用字符串连接,并且空字符串与您无关。(它可能更昂贵,但我更关心的是可读性,而不是性能。)
发布于 2011-07-13 21:22:21
String s = "" + 4;
被编译成以下代码:
StringBuffer _$_helper = new StringBuffer("");
_$_helper.append(Integer.toString(4));
String s = _$_helper.toString();
显然,这是相当浪费的。请记住,在后台,如果您使用+与字符串的关联,则编译器始终使用StringBuffers
发布于 2011-07-13 20:41:20
还有第三个- String.valueOf(..)
(它称为Wrapper.toString(..)
实际上,编译器在这些地方添加了Wrapper.toString(..)
,所以它在字节码方面是相同的。但""+x
更丑陋。
https://stackoverflow.com/questions/6679015
复制相似问题