StringBuffer类的使用和详解底层实现、String和StringBuffer的区别、StringBuffer的常用方法

版权声明:尊重原创,码字不易,转载需博主同意。 https://blog.csdn.net/qq_34626097/article/details/84679652

Java StringBuffer类的使用和详解底层实现、String和StringBuffer的区别、StringBuffer的常用方法


StringBuffer在工作的时候,使用的频率非常的高,常常会来拿来接收sql,并进行条件拼接。

1.java StringBuffer类

  1. java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。
  2. 很多方法与String相同,但StingBuffer是可变长度的。
  3. StringBuffer是一个容器。
    注:重点为①中特性

2. StringBuffer类的构造器(构造方法)

  1. StringBuffer()初始容量为16的字符串缓冲区
  2. StringBuffer(int size)构造指定容量的字符串缓冲区
  3. StringBuffer(String str)将内容初始化为指定字符串内容
  4. StringBuffer的底层实现,其能够实现可变序列的原因就是,在声明的时候,先给你一个char[]数组的长度,然后再你添加的时候,如果数组长度不够,再增加。
    地城
    地城

3.String和StringBuffer的区别

String s = new String(“我喜欢学习”);
StringBuffer buffer = new StringBuffer(“我喜欢学习”);
buffer.append(“数学”);
图

  1. String能够new和直接赋值,但StringBuffer类必须使用构造器。
  2. String类在进行操作的时候,会在字符常量池新增一个新的字符安,如:String str1= “a”; String str2 = str1 + “b”; 新增加一个新的字符串"ab",但StringBuffer类不会,使用append()的时候
  3. String是不可变序列的,在生成的时候,底层char[]数组长度已经确定,但StringBuffer是可变的。
  4. 在涉及到操作的时候StringBuffer类的效率高于String

4. StringBuffer类的常用操作方法

  1. 增(在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)
  1. 插入(指定位置插入一个str)
StringBuffer insert(int index, String str) 
  1. 查询
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) 
  1. 删除(删除一个左闭右开区别的位置的字符串)
StringBuffer delete(int startIndex, int endIndex) 
  1. 反转(反转自己本身,不会生成新的对象)
public StringBuffer reverse() 
  1. 截取(获取一个左闭右开的字符串)
public String substring(int start,int end)
  1. 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
	}

猜你喜欢

转载自blog.csdn.net/qq_34626097/article/details/84679652