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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 靳石磊 中级黑马   /  2013-1-26 10:58  /  2087 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

string和stringbuilder有什么区别?什么时候用string,什么时候用stiingbuilder?

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

6 个回复

倒序浏览
主要区别是:
String对象是不可改变的,每次使用String类中的方法时,都要在内存中创建一个新的字符串对象,如果要重复修改,则消耗资源较多。
而StringBuilder类,修改字符串时不创建新对象。
故比如用一个循环来将多个字符串连接在一起时,可以考虑用StringBuiler类提升性能。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
stiingbuilder是拼接字符串的时候用的,因为它的效率非常高,比普通str1+str2快N倍,如果有大量的字符串拼接工作,就必须得用这个,不然程序可能会崩溃
string就是普通字符串啦,它了很多特性的,一般就用string就好了,只有特殊要求的时候才会用stringbuilder

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
String来做字符串的连接时效率非常低,但并不是所任何情况下都要用StringBuilder,当我们连接很少的字符串时可以用String,但当做大量的或频繁的字符串连接操作时,就一定要用StringBuilder。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
1.特殊情况下用StringBuilder速度很快,效率高,有大量的字符串拼接的时候,也应该要用StringBuilder
2.StringBuilder和string使用时在内存中的占用是不一样的,不同的情况必须考虑何时使用StringBuilder、string。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
其实你还少说一个,还有个StringBuffer。这三个很容易混 。1.操作数据比较少我们经常会用用 String 2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer。主要还是处理效率问题

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
千年虫 黑马帝 2013-1-29 21:48:38
7#
StringBuilder的容量比真实存储的字符串要大,所以多次追加字符串不会重新创建对象,但当追加到字符串长度超过StringBuilder的容量后,StringBuilder也会重新创建对象。

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马