StringBuffer
1.StringBuffer概述
为什么会出现StringBuffer,如果我们对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,这样操作会耗费时间,同时浪费空间,
于是,java就给我们提供了StringBuffer,用于解决这一个问题。
2.StringBuffer
StringBuffer是线程安全的可变字符串。
3.StringBuffer和String之间的区别?
前者长度和内容都可变,后者不可变。
如果前者做字符串的拼接,那么就不会浪费太多的空间。
4.StringBuffer的构造方法
public StringBuffer():StringBuffer的无参构造方法
public StringBuffer(int capacity):指定容量的字符串缓冲区对象
public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
StringBuffer的俩个长度方法:
public int capacity():返回当前的容量。理论值
public int length():返回长度(字符数)。实际存储值
代码测试:
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
System.out.println("sb:"+sb);
System.out.println("sb.capacity:"+sb.capacity());
System.out.println("sb.length:"+sb.length());
System.out.println("----------------");
StringBuffer sb1 = new StringBuffer(50);
System.out.println("sb1:"+sb);
System.out.println("sb1.capacity:"+sb1.capacity());
System.out.println("sb1.length:"+sb1.length());
System.out.println("-----------------");
StringBuffer sb2 = new StringBuffer("hello");
System.out.println("sb2:"+sb2);
System.out.println("sb2.capacity:"+sb2.capacity());
System.out.println("sb2.length:"+sb2.length());
}
//结果:
sb:
sb.capacity:16
sb.length:0
----------------
sb1:
sb1.capacity:50
sb1.length:0
-----------------
sb2:hello
sb2.capacity:21
sb2.length:5
5.StringBuffer的成员方法
(1).StringBuffer的添加功能
public StringBuffer append(String str):可以把任意类型的字符添加到字符串缓冲区里面,并返回缓冲区本身
//代码测试
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append("hello");
System.out.println(sb == sb1);//true
}
//表明StringBuffer在开辟空间的时候俩个对象只开辟了一个存储空间。
public StringBuffer insert(int offset,String str):在指定位置把任意类型的字符字符添加到字符串缓冲区里面,并返回缓冲区本身
(2).StringBuffer的删除功能
public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身。
public StringBuffer delete(int start,int end):删除从指定位置开始到结束的内容,并返回本身。
(3).StringBuffer的替换功能
public StringBuffer replace(int start,int end,String str);用start开始到end使用str替换。
(4).StringBuffer的反转功能
public StringBuffer reverse():把字符串从尾到头重写排列组成一个新的字符串。
(5).StringBuffer的截取功能
public String substring(int start);从指定位置开始从StringBuffer中截取从start位置开始到最后的字符串,并返回截取出来的字符串
public String substring(int start,int end):从StringBuffer中截取指定位置开始到结束的字符串,并把截取内容返回。
(6).把String和StringBuffer进行相互转化
public static void main(String[] args) {
//String转化为StringBuffer
String str = "hello";
//方法1:通过构造方法
StringBuffer sb = new StringBuffer(str);
//通过StringBuffer的append
StringBuffer sb2 = new StringBuffer();
sb2.append(str);
System.out.println("-----------");
//StringBuffer转String
//方法1:通过构造方法
StringBuffer sbf = new StringBuffer("java");
//通过构造方法
String str2 = new String(sbf);
//通过toString()方法
String str3 = sbf.toString();
}
(7).String,StringBuffer,以及StringBulder之间的区别
String:内容不可变,而StringBuffer和StringBuilder都是内容可变的。
StringBuffer是同步的,数据安全,效率低;StringBulder是不同步的,数据不安全,效率高。