Sta*_*ust 6 java string performance
每当我尝试在字符串中添加数字时:
String s=new String();
for(int j=0;j<=1000000;j++)
s+=String.valueOf(j);
Run Code Online (Sandbox Code Playgroud)
我的程序正在添加数字,但速度很慢.但当我改变我的程序并使它像:
StringBuffer sb=new StringBuffer();
for(int j=0;j<=1000000;j++)
sb.append(String.valueOf(j));
Run Code Online (Sandbox Code Playgroud)
我很快得到了结果.为什么会这样?
s+=String.valueOf(j);需要在String每次调用时分配一个新对象,这很昂贵.在StringBuffer只需要增加一些内部表示,当含有字符串过大,这经常发生要少得多.
如果您使用的StringBuilder是一个非同步版本的StringBuffer,它可能会更快.
需要注意的一点是,虽然这确实适用于循环和许多其他情况,但它并不一定适用于使用以下连接字符串的所有情况+:
String helloWorld = getGreeting() + ", " + getUsername() + "!";
Run Code Online (Sandbox Code Playgroud)
在这里,编译器可能会以它认为合适的方式优化代码,这可能会也可能不会创建StringBuilder,因为这也是一项昂贵的操作.
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |