黑马程序员技术交流社区

标题: StringBuilder的简单总结 [打印本页]

作者: 星空仰望heaven    时间: 2016-4-10 23:48
标题: StringBuilder的简单总结
StringBuilder
问题:String在字符串拼接时,会产生中间垃圾,占内存
理论解决:1、创建对象,里面有一个容器
        2、拼接字符串,都是添加进容器
        3、将容器中的数据取出,变成字符串
由此推出:StringBuilder
代码编写:
        1、创建StringBuilder对象
                sb1 = new StringBuilder(); ----- 容器16字符
                sb2 = new StringBuilder(36);---- 容器36字符
                sb3 = new StringBuilder("ABC");-- 容器内有abc加16个空位
        2、对容器进行数据操作
            增:
                append(任意数据) --- 追加
                insert(int index , 数据) --- 插入       
            删:
                deleteCharAt(int index) ---- 删除指定索引字符       
                delete(int start, int end)       
            替换功能:
                public StringBuilder replace(int start,int end,String str) 将[start,end)替换成 str
            反转功能         
                public StringBuilder reverse() ------- 可能用到
            截取功能 --- 注意返回值类型
                public String substring(int start) ------ 从start到最后
                public String substring(int start,int end)        ---- [start,end)
        3、将容器中的数据取出,变成字符串
                String toString();
                注意:A、StringBuilder使用了链式设计模式
                      B、StringBuilder里面的容器(char[])可以自己增长
        StringBuilder使用时机:字符串循环拼接时,建议自己创建SB对象       
        String 和 StringBuilder 转化:
                String ----> StringBuilder
                        new StringBuilder(String);
                StringBuilder---->String
                        A、SB.toString();
                        B、new String(SB);
重点:StringBuffer与StringBuilder/String比较
        1、String与StringBuffer/Builder区别:
        后者相当于是容器,在字符串拼接时,可以避免产生中间垃圾
        也就是说:String是一个不可变的字符序列,StringBuffer是一个可变的字符序列
        2、StringBuffer 与 StringBuilder区别:
        相同点:StringBuffer与StringBuilder实现原理与实现方法基本一致       
                  查看源代码二者实现基本一致
        不同点:
        (1)StringBuffer的成员方法 synchronized(多线程的概念)
        (2)StringBuffer是jdk1.0版本的,是线程安全的,效率低
         StringBuilder是jdk1.5版本的,是线程不安全的,效率高
       






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