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版本的,是线程不安全的,效率高
|
|