加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:54:14 所属栏目: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(St
每当我尝试在字符串中添加数字时:
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,因为这也是一项昂贵的操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读