Java StringBuffer类的使用和详解底层实现、String和StringBuffer的区别、StringBuffer的常用方法
StringBuffer在工作的时候,使用的频率非常的高,常常会来拿来接收sql,并进行条件拼接。
1.java StringBuffer类
- java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。
- 很多方法与String相同,但StingBuffer是可变长度的。
- StringBuffer是一个容器。
注:重点为①中特性。
2. StringBuffer类的构造器(构造方法)
- StringBuffer()初始容量为16的字符串缓冲区
- StringBuffer(int size)构造指定容量的字符串缓冲区
- StringBuffer(String str)将内容初始化为指定字符串内容
- StringBuffer的底层实现,其能够实现可变序列的原因就是,在声明的时候,先给你一个char[]数组的长度,然后再你添加的时候,如果数组长度不够,再增加。
3.String和StringBuffer的区别
String s = new String(“我喜欢学习”);
StringBuffer buffer = new StringBuffer(“我喜欢学习”);
buffer.append(“数学”);
- String能够new和直接赋值,但StringBuffer类必须使用构造器。
- String类在进行操作的时候,会在字符常量池新增一个新的字符安,如:String str1= “a”; String str2 = str1 + “b”; 新增加一个新的字符串"ab",但StringBuffer类不会,使用append()的时候
- String是不可变序列的,在生成的时候,底层char[]数组长度已经确定,但StringBuffer是可变的。
- 在涉及到操作的时候StringBuffer类的效率高于String
4. StringBuffer类的常用操作方法
- 增(在StringBuffer字符串后面增加)
StringBuffer append(String s)
StringBuffer append(int n)
StringBuffer append(Object o)
StringBuffer append(char n)
StringBuffer append(long n)
StringBuffer append(boolean n)
- 插入(指定位置插入一个str)
StringBuffer insert(int index, String str)
- 查询
public char charAt(int n )//查询指定位置的char
public int indexOf(String str)//返回首次出现str的位置
public int length()//返回数组的长度
- 改
public void setCharAt(int n ,char ch)//修改n位置的字符为ch
StringBuffer replace( int startIndex ,int endIndex, String str)
- 删除(删除一个左闭右开区别的位置的字符串)
StringBuffer delete(int startIndex, int endIndex)
- 反转(反转自己本身,不会生成新的对象)
public StringBuffer reverse()
- 截取(获取一个左闭右开的字符串)
public String substring(int start,int end)
- demo
@Test
public void test() {
StringBuffer sb = new StringBuffer();
System.out.println(sb.length());//初始容量为零不等于长度为零
sb.append("adc").append("123");//实现可变序列,不同于String,抛弃原来生成新的
System.out.println(sb);
// ArrayList list = new ArrayList<>();//动态数组的实现底层也一样
sb.insert(3, "hello");
System.out.println(sb);
StringBuffer sb1 = sb.reverse();
System.out.println(sb1);//321ollehcda
System.out.println(sb);//321ollehcda
}