2019-06-05 java学习日记
StringBuffer与数组排序
StringBuffer类的概述
StringBuffer和String的区别
String是一个不可变的字符序列
StringBuffer是一个可变的字符序列
线程安全与线程不安全
可以理解为公开与私密,
如StringBuffer是线程安全的,是执行同步的,每一次都要判断,所以会比较慢;
而StringBuilder是线程不安全,是不执行同步的,所以会比较快。
StringBuffer类的构造方法
无参构造方法: public StringBuffer();
指定容量的字符串缓冲区对象:public StringBuffer(int capacity);
指定字符串内容的字符串缓冲区对象:public StriingBuffer(String str);
StringBuffer的方法:
返回值当前容量:public int capacity();(理论值)
返回长度(字符数): public int length();(实际值)
1 public static void main(String[] args) { 2 StringBuffer sb = new StringBuffer(); 3 System.out.println(sb.length()); //容器中的字符个数,实际值 4 System.out.println(sb.capacity()); //容器的初始容量,理论值 5 6 StringBuffer sb2 = new StringBuffer(10); 7 System.out.println(sb2.length()); 8 System.out.println(sb2.capacity()); 9 10 StringBuffer sb3 = new StringBuffer("heima"); 11 System.out.println(sb3.length()); //实际字符的个数 12 System.out.println(sb3.capacity()); //字符串的length + 初始容量 13 14 }
StringBuffer的添加功能
public StringBuffer append(String str);
可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
public StringBuffer insert(int offset,String str):
在制定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,
底层是一个长度16的字符数组,当调用添加的方法时,不会再重新创建对象,
再不断向原缓冲区添加字符。
1 StringBuffer sb1 =new StringBuffer(); 2 StringBuffer sb2 =sb1.append(true); 3 System.out.println(sb2); //系统默认加上toString 4 System.out.println(sb1.toString()); //默认重写toString方法
StringBuffer的删除功能
public StringBuffer deleteCharAt(int index);
删除指定位置的字符,并返回本身
public StringBuffer delete(int start,int end)
删除从指定位置开始指定位置结束的内容,并返回本身