黑马程序员技术交流社区

标题: 就一小段代码,帮忙改一下 [打印本页]

作者: 杨雯雯    时间: 2012-12-20 20:21
标题: 就一小段代码,帮忙改一下
本帖最后由 杨雯雯 于 2012-12-21 10:56 编辑

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


作者: 蔡少凯    时间: 2012-12-20 20:37
String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer StringBuilder则是可变类,任何对它所指代的字符串的改变都不会产生新的对象
作者: 臧盼    时间: 2012-12-20 20:40
public String statement(){
StringBuilder buff = new StringBuilder();
for(int i=0;i<500;i++)
buff+=Item[i];
return buff;
}
用StringBuilder类

作者: 杨雯雯    时间: 2012-12-20 20:40
蔡少凯 发表于 2012-12-20 20:37
String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer StringBuilder则是 ...

麻烦给一下改正后的代码
作者: 高境    时间: 2012-12-20 20:41
你那个错了吧,定义的变量s呢?应该是String s = “”;

作者: 杨雯雯    时间: 2012-12-20 20:48
嗯,,嗯,是String s="";不好意思,我手下失误
作者: 杨雯雯    时间: 2012-12-20 20:48
高境 发表于 2012-12-20 20:41
你那个错了吧,定义的变量s呢?应该是String s = “”;

嗯,,嗯,是String s="";不好意思,我手下失误

作者: filter    时间: 2012-12-21 10:26
        public String statement(){
                //String =””;
                StringBuilder sb = new StringBuilder();//新建一个StringBuilder
                for(int i=0;i<500;i++){
                //s+=Item;
                sb.append(Item);//往容器中不断添加元素
                }
        return sb.toString();//字符串形式返回
        }
作者: 黄锦成    时间: 2012-12-21 11:07
用stringBuffer或stringBuilder来代替




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2