java – 附加字符串时速度问题

前端之家收集整理的这篇文章主要介绍了java – 附加字符串时速度问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
每当我尝试在字符串中添加数字时:
String s=new String();

 for(int j=0;j<=1000000;j++)

    s+=String.valueOf(j);

我的程序正在添加数字,但速度很慢.但当我改变我的程序并使它像:

StringBuffer sb=new StringBuffer();

for(int j=0;j<=1000000;j++)

sb.append(String.valueOf(j));

我很快得到了结果.为什么会这样?

解决方法

s = String.valueOf(j);每次调用时都需要分配一个新的String对象,这很昂贵.当包含的字符串太大时,StringBuffer只需要增加一些内部表示,这种情况发生得更少.

如果使用StringBuilder,它可能会更快,这是StringBuffer的非同步版本.

需要注意的一点是,虽然这确实适用于循环和许多其他情况,但它并不一定适用于使用以下连接字符串的所有情况:

String helloWorld = getGreeting() + "," + getUsername() + "!";

在这里,编译器可能会以它认为合适的方式优化代码,这可能会也可能不会创建StringBuilder,因为这也是一项昂贵的操作.

猜你在找的Java相关文章