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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

哪种写法更好,内存效率更高
① String tmp = "a" + "b" + "c";
② String tmp = null;
tmp+= "a";
tmp+= "b";
tmp+= "c";
③ String tmp = null;
StringBuffer buf = new StringBuffer();
buf.append("a");
buf.append("b");
buf.append("c");
tmp = buf.toString();

5 个回复

倒序浏览
最快是:StringBuilder buf = new StringBuilder ();
buf.append("a");
buf.append("b");
buf.append("c");
tmp = buf.toString();
因为StringBuilder 是带缓冲区的,并且是线程不安全的(即:new一个缓冲区,不断往里填充数据,然后返回字符串,由于不考虑线程安全,速度更快。但是不能用于多线程,因为是线程不安全的,会有数据安全问题)。StringBuffer次之,且StringBuffer是线程安全的,能用于多线程,但效率比StringBuilder 差一点。字符串拼接效率肯定是最低的,由于字符串是不可变的,每次拼接会new出一个新的String对象,太耗资源。所以,涉及频繁的字符串改变问题,不要用字符串拼接的方式,耗资源。应该用StringBuilder 和StringBuffer,具体的:单线程用StringBuilder ,多线程用StringBuffer
回复 使用道具 举报
用stringBuffer()好些,因为string就相当于又new 了一个对象,
string和stringBuffer的区别是,string是定长,长度不可变的,每次修改就又new 了一个对象,而StringBuffer是的长度是可变的,不会再new一个对象,用append添加
回复 使用道具 举报
  StringBuffer  效率跟高,同时存储操作字符串,String的话,每操作一次,就会新增一个对象,而SStringBuffer 的话,是在本身上动态添加操作字符串。
回复 使用道具 举报
StringBuffer buf = new StringBuffer();好些
String字符串是常量;它们的值在创建之后不能更改。每次相加就要创建新的字符串对象。
StringBuffer是字符串缓冲区,是一个容器。支持可变的字符串,每次相加无需再创建新的字符串对象
至于那个快哪个慢,用currentTimeMillis()--( 返回以毫秒为单位的当前时间。)写个程序看看就知道
回复 使用道具 举报
帮你顶,人还是厚道点好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马