黑马程序员技术交流社区

标题: String 和 StringBuffer [打印本页]

作者: 秦超    时间: 2012-3-7 14:19
标题: String 和 StringBuffer
StringBuffer的功能很强大,既然是这样,为什么还需要String呢?是不是String 还有一些StringBuffer没有的功能呢?或者是执行效率更高?
作者: 程小龙    时间: 2012-3-7 15:34
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
作者: 赵晓波    时间: 2012-3-7 16:34
java.lang.String代表不可变的字符序列。
StringBuffer和String类似,但StringBuffer可以对其字符串进行改变。
//不可变,s1=s1+s2时先开辟一空间存储s1+s2的值,再让s1指向s1+s2
public class Test {
        public static void main(String[] args) {
                String s1 = "hello";
                String s2 = "world";
                s1 += s2;
        }
}
作者: 彭卫红    时间: 2012-3-7 16:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: dangfei    时间: 2012-3-7 17:04
既然String存在,自然有它存在的价值,的确有方法StringBuffer里没有,比如String.startsWith(prefix),String.endWith(prefix)等,lz可以看看这两类的api。
再者String 是不可变对象而StringBuffer,StringBuffer要维持这一可变对象特性必然有额外的开销,如果程序中没有频繁的对字符串操作(如拼接操作)最好还是用
String。看看大师们的程序,也没几个到处都是StringBuffer的。
作者: 秦超    时间: 2012-3-7 17:30
了解了~~~
作者: 陈斌    时间: 2012-3-7 17:30

new StringBuffere(buf,0,len);
buf 字节数组;
len长度  可见长度是可变的
作者: 小白    时间: 2012-3-7 19:57
当你知道字符串的长度时String的执行效率要比StringBuffer高!
作者: a504079589    时间: 2012-3-7 21:26
String是对象不是原始类型, 是不可改变对象,一旦被创建,就不能修改它的值.;
StringBuffer是一个可变对象,StringBuffer只能通过构造函数来建立,对象被建立以后,在内存中就会分配内存空间,初始保存一个null;
向StringBuffer中付值时通过append方法.






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