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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦超 中级黑马   /  2012-3-7 14:19  /  2135 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuffer的功能很强大,既然是这样,为什么还需要String呢?是不是String 还有一些StringBuffer没有的功能呢?或者是执行效率更高?

8 个回复

倒序浏览
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
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:45
板凳
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
既然String存在,自然有它存在的价值,的确有方法StringBuffer里没有,比如String.startsWith(prefix),String.endWith(prefix)等,lz可以看看这两类的api。
再者String 是不可变对象而StringBuffer,StringBuffer要维持这一可变对象特性必然有额外的开销,如果程序中没有频繁的对字符串操作(如拼接操作)最好还是用
String。看看大师们的程序,也没几个到处都是StringBuffer的。
回复 使用道具 举报
了解了~~~
回复 使用道具 举报

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

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