StringBuffer

StringBuffer

定义

线程安全的可变字符序列, ⼀个类似于String的字符缓冲区, 我们可以将StringBuffer看作是⼀

个⾼级的String

StringBuffer和String的区别

String是⼀个不可变的字符序列

StringBuffer是⼀个可变的字符序列

构造⽅法

public StringBuffer():⽆参构造⽅法 默认容量是16

public StringBuffer(int capacity):指定容量的字符串缓冲区对象

public StringBuffer(String str):指定字符串内容的字符串缓冲区对象

扩容公式: 原容量<< 1 + 2

常⽤⽅法

  1. 容量和⻓度

public int capacity() : 返回当前容量 理论值(不掌握)

public int length() : 返回⻓度(字符数) 实际值

  1. 添加

    • public StringBuffer append(String str)
      • 可以把任意类型数据添加到字符串缓冲区⾥⾯,并返回字符串缓冲区本身
    • public StringBuffer insert(int offset,String str)
      • 在指定位置把任意类型的数据插⼊到字符串缓冲区⾥⾯,并返回字符串缓冲区本身
  2. 删除

    • public StringBuffer deleteCharAt(int index):
      • 删除指定位置的字符,并返回本身
    • public StringBuffer delete(int start,int end):
      • 删除从指定位置开始指定位置结束的内容,并返回本身
  3. 替换和反转

    • public StringBuffer replace(int start,int end,String str)

      • 从start开始到end⽤str替换
    • public StringBuffer reverse()

      • 字符串反转

演示

import java.util.Arrays;

public class StringBufferDemo {
    //Sting --不可变字符串 创建之后不可以改变,每次拼接实质上是创建一个新的对象
    //StringBuffer-- 线程安全 可变字符串

    public static void main(String[] args) {
        //stringbuffer的构造方法 --- 可变? 字符数组的内容是可以改变 -- 长度的问题 扩容
        //StringBuffer的默认容量/初始容量--16  无参构造方法
        //也可以指定初始容量 -- 有参构造
        /*
            public StringBuffer() {
                super(16);   // 直接使用了父类的有参构造方法    value = new char[capacity];
            }
         */
        StringBuffer stringBuffer = new StringBuffer();  // 无参构造方法
        int capacity = stringBuffer.capacity();//获取容量
        System.out.println(capacity);

        /*
            public StringBuffer(int capacity) {
                super(capacity);   // 直接使用了父类的有参构造方法    value = new char[capacity];
            }
         */
        StringBuffer stringBuffer1 = new StringBuffer(32);
        int capacity1 = stringBuffer1.capacity();
        System.out.println(capacity1);
        //第二个有参构造方法  -- 不是直接确定数组的长度,而是通过确定数组的内容来间接确定长度
        StringBuffer stringBuffer2 = new StringBuffer("123456");
        //int capacity2 = stringBuffer2.capacity();
        //System.out.println(capacity2);

        //获取的方法
        // 1. 获取容量  -- 当前的stringBuffer一共可以放的字符的个数
        int capacity2 = stringBuffer2.capacity();
        System.out.println("stringBuffer2的容量是:" + capacity2);
        //2. 获取长度 -- 当前的stringBuffer已经放的字符的个数
        int length = stringBuffer2.length();
        System.out.println("stringBuffer2的长度是:" + length);

        //向stringbuffer的末尾添加数据 基本扩容方式:原容量<<1+2
        StringBuffer buffer = stringBuffer.append("abcde");//16 5
        System.out.println(buffer.capacity());
        buffer = stringBuffer.append("abcde");//16  10
        System.out.println(buffer.capacity());
        buffer = stringBuffer.append("abcde");//16  15
        System.out.println(buffer.capacity());
        buffer = stringBuffer.append("abcde");//16  20  扩  34
        System.out.println(buffer.capacity());
        buffer = stringBuffer.append("abcde");//34 25
        System.out.println(buffer.capacity());
        buffer = stringBuffer.append("abcde");//34  30
        System.out.println(buffer.capacity());
        buffer = stringBuffer.append("abcde");//34  35   扩  70
        System.out.println(buffer.capacity());

        StringBuffer sb = new StringBuffer();
        StringBuffer sb1 = sb.append("123456789");
        System.out.println(sb1.capacity());
        sb1.append("123456789123456789123456789123456789123456789123456789");
        System.out.println(sb1.capacity());

        //在指定的位置插入数据
        System.out.println(stringBuffer2.length());
        StringBuffer insert = stringBuffer2.insert(0, "呵呵呵");
        System.out.println(insert);
        System.out.println(insert.length());
        char[] chars = insert.toString().toCharArray();
        System.out.println(Arrays.toString(chars));
        insert = stringBuffer2.insert(3,"哈哈");
        System.out.println(insert);

        //删除数据
        StringBuffer stringBuffer3 = insert.deleteCharAt(4);
        System.out.println(stringBuffer3);
        System.out.println(insert);

        //删除指定范围的字符 开始的位置 结束的位置 --含头不含尾
        StringBuffer delete = stringBuffer3.delete(1, 5);
        System.out.println(delete);

        //替换的方法 起始的位置  结束的位置  替换的字符串
        StringBuffer replace = delete.replace(1, 3, "*");
        System.out.println(replace);

        //反转的方法
        StringBuffer reverse = replace.reverse();
        System.out.println(reverse);


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值