黑马程序员技术交流社区

标题: string和stringbuilder的区别是什么? [打印本页]

作者: 资建文    时间: 2012-8-23 17:04
标题: string和stringbuilder的区别是什么?
string和stringbuilder的区别是什么?
作者: 许庭洲    时间: 2012-8-23 17:13
1. String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会产生一个新的实例;
2. 在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder ,不要使用 String.
作者: 黑马王建伟    时间: 2012-8-23 17:14
String创建后的字符串是不可改变的,stringbuilder可以改变创建后的内容
作者: 黑马王建伟    时间: 2012-8-23 17:17
详细点说:可变与不可变,不变是一种设计模式,意思是说当此对象创建后,你不能改变它的内部状态,对String,你创建了一个String,你能通过set方法改变它的长度length吗。StringBuilder可以。
StringBuilder类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
基本来说都是在性能上都是 StringBuilder > StringBuffer > String 的了。
作者: 冯雅伦    时间: 2012-8-23 17:39
String运算时会产生一个String实例,原理就是将原来的字符串和新的字符串都写入内存,然后再在内存中删除掉原有的字符串,比较耗时,小数据可以使用。
而StringBulider中,存在Append方法,与String不同,他则是在原有的字符串上进行修改,比较直接,对于大量的添加,或其他操作时,要比String省时得多
作者: 商秀川    时间: 2012-8-23 21:34
String是不可变的,固定的。
StringBuilder这两个是带缓冲的容器,长度是可以变化的。
String s = "hello";
s = s + "world";
这里会有三个字符串的对象。

如果是用StringBuilder
StringBuffer buffer = new StringBuffer();
buffer.append("hello").append("world");
这里有一个字符串缓冲区对象
作者: 瞿正峰    时间: 2012-8-23 23:48
多看一点就学到一点,新手多关照




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