46 java
我可以使用将整数转换为字符串
String s = "" + 4; // correct, but poor style
or
String u = Integer.toString(4); // this is good
Run Code Online (Sandbox Code Playgroud)
我可以使用双精度转换为字符串
String s = "" + 4.5; // correct, but poor style
or
String u = Double.toString(4.5); // this is good
Run Code Online (Sandbox Code Playgroud)
我可以使用String s = "" + data
方法将int或double转换为String.虽然如果我想使用其他方法,toString()
我必须使用每种数据类型的Wrapper类.那么为什么在一些书中 提到第一种方法是差的,而第二种方法则更好.哪一个更好的方法,为什么?
Jon*_*eet 67
我会用
String.valueOf(...)
Run Code Online (Sandbox Code Playgroud)
您可以对所有类型使用相同的代码,但没有可怕的和无意义的字符串连接.
请注意,它也准确地说出了您想要的内容 - 与给定原始值对应的字符串值.将此与"" + x
您正在应用字符串连接的方法进行比较,即使您无意连接任何内容,并且空字符串与您无关.(它可能更昂贵,但是我更关注的是可读性,而不是性能.)
Mic*_*rdt 31
怎么样String.valueOf()
?它被覆盖了所有原始类型的重载和委托给toString()
引用类型.
Ang*_*ere 10
String s = "" + 4;
Run Code Online (Sandbox Code Playgroud)
编译为此代码:
StringBuffer _$_helper = new StringBuffer("");
_$_helper.append(Integer.toString(4));
String s = _$_helper.toString();
Run Code Online (Sandbox Code Playgroud)
显然这很浪费.请记住,在场景后面,如果在String中使用+ inoc,编译器总是使用StringBuffers
还有第三个 - String.valueOf(..)
(调用Wrapper.toString(..)
实际上编译器会Wrapper.toString(..)
在这些地方添加,所以它在字节码方面是相同的.但是""+x
更丑陋.
归档时间: |
|
查看次数: |
4596 次 |
最近记录: |