A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨雯雯 中级黑马   /  2012-12-20 20:21  /  1288 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨雯雯 于 2012-12-21 10:56 编辑

有这么一段代码:
public String statement(){
String =””;
for(int i=0;i<500;i++)
s+=Item;
return s;
}
这里String的连接操作(+=)会产生很多对象,性能不好,想改一下,应该怎么改呀?

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer StringBuilder则是可变类,任何对它所指代的字符串的改变都不会产生新的对象
回复 使用道具 举报
public String statement(){
StringBuilder buff = new StringBuilder();
for(int i=0;i<500;i++)
buff+=Item[i];
return buff;
}
用StringBuilder类
回复 使用道具 举报
蔡少凯 发表于 2012-12-20 20:37
String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer StringBuilder则是 ...

麻烦给一下改正后的代码
回复 使用道具 举报
你那个错了吧,定义的变量s呢?应该是String s = “”;

评分

参与人数 1黑马币 +20 收起 理由
曹佳佳 + 20 赞一个!

查看全部评分

回复 使用道具 举报
嗯,,嗯,是String s="";不好意思,我手下失误
回复 使用道具 举报
高境 发表于 2012-12-20 20:41
你那个错了吧,定义的变量s呢?应该是String s = “”;

嗯,,嗯,是String s="";不好意思,我手下失误
回复 使用道具 举报
filter 中级黑马 2012-12-21 10:26:05
8#
        public String statement(){
                //String =””;
                StringBuilder sb = new StringBuilder();//新建一个StringBuilder
                for(int i=0;i<500;i++){
                //s+=Item;
                sb.append(Item);//往容器中不断添加元素
                }
        return sb.toString();//字符串形式返回
        }
回复 使用道具 举报
用stringBuffer或stringBuilder来代替
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马