• StringBuffer类


    StringBuffer类
    在java中StringBuffer代表可变的字符序列,可以对字符串内容进行增删很多方法与String相同,但StringBuffer是可变长度的
    StringBuffer是一个容器

    1.StringBuffer 的直接父类 是 AbstractStringBuilder
    2.StringBuffer 实现了 Serializable,即StringBuffer的对象可以串行化
    3.在父类中 AbstractStringBuilder 有属性 char[] value,不是final 该value 数组存放 字符串内容,因此存放在堆中的
    4.StringBuffer 是一个final类,不能被继承
    5.因为StringBuffer 字符内容时存在char[] value 中的,所以在变化(增加/删除)
    不用每次都要更换地址(既不是每次创建新对象),所以效率高于String

    StringBuffer stringBuffer = new StringBuffer(“hello”)

    String 与 StringBuffer 对比

    String 保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率低

    StringBuffer 保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用更新地址,效率高

    StringBuffer的构造器
    StringBuffer()
    构造一个其中不带字符的字符串缓冲区,其初始内容为16个字符;

    StringBuffer(CharSequence seq){
    public java.lang.StringBuffer(CharSequence seq)构造一个字符缓冲区,它包含与指定的CharSequence相同的字符
    }

    StringBuffer(int capacity)//capacity[容器]
    构造一个不带字符,但具有指定初始容量的字符缓冲区,即对char[]大小进行指定

    StringBuffer(String str)
    构造一个字符缓冲区,并将其内容初始化为指定的字符串内容

    package com.ld.stringbuffer_;

    public class StringBuffer02 {
    public static void main(String[] args) {

        //构造器的使用
        //解析
        //1.创建一个 大小为16的char[],用于存放字符内容
        StringBuffer stringBuffer = new StringBuffer();
    
        //2.通过构造器指定 char[] 大小
        StringBuffer stringBuffer1 = new StringBuffer(100);
    
        //3.通过给一个String 创建 StringBuffer;char[] 大小就是 str.length()+16
        StringBuffer stringBuffer2 = new StringBuffer("hello");
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    }

    String 和 StringBuffer相互转换
    在开发中,经常需要将String 和StringBuffer进行转换,看看如何实现
    package com.ld.stringbuffer_;

    public class StringAddStringBuffer {
    public static void main(String[] args) {

        //String -->StringBuffer
        String str="hello tom";
        //方式1 使用构造器
        //注意:返回的才是StringBuffer对象,对str 本身没有影响
        StringBuffer stringBuffer = new StringBuffer(str);
        //方式2 使用的是append方法
        StringBuffer stringBuffer1 = new StringBuffer();
        stringBuffer1=stringBuffer1.append(str);
    
        //StringBuffer -> String
        StringBuffer stringBuffer2 = new StringBuffer("德玛洗衣啊");
        //方式1 使用StringBuffer提供的 toString方法
        String s= stringBuffer2.toString();
    
        //方式2    使用构造器来解决
        String s1 = new String(stringBuffer2);
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    }

        StringBuffer s=new StringBuffer("hello");
        //增
        s.append(',');// "hello,"
        s.append("张三丰");//"hello,赵敏"
        s.append("赵敏").append(100).append(true).append(10.5);//"hello,张三丰赵敏100true10.5"
        System.out.println(s);//"hello,张三丰赵敏100true10.5"
    
        //删
        /*
        删除索引为>=start && ,end 处的字符
        解析:
        删除11 到 14 的字符[11,14)
        * */
        s.delete(11,14);
        System.out.println(s);//"hello,张三丰赵敏true10.5"
    
        //改
        //使用 周芷若 替换 索引9-11的字符 [9-11)
        s.replace(9,11,"周芷若");
        System.out.println(s);//"hello,张三丰周芷若true10.5"
    
        //查找指定的子串在字符串第一次出现的索引,如果找不到返回-1
        int indexOf =s.indexOf("张三丰");
        System.out.println(indexOf);//6
    
    
        //插入
        //解析:在索引为9的位置插入 “赵敏”,原来索引为9的内容自动后移
        s.insert(9,"赵敏");
        System.out.println(s);//hello,张三丰赵敏周芷若true10.5
    
        //长度
        System.out.println(s.length());//22
        System.out.println(s);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    2024考研王道计算机408数据结构+操作系统+计算机组成原理+计算机网络
    k8s 入门到实战--部署应用到 k8s
    力扣刷题学习SQL篇——1-17 查询近30天活跃用户数(日期进行区间判定)
    康耐德视觉检测系统可以在元器件生产中发挥什么作用?
    JVM快速入门
    PHP服务器端API原理及示例讲解(接口开发)
    GAMS104 现代游戏引擎 2
    STM32H7使用FileX库BUG,SD卡挂载失败
    MFC-对话框程序核心-IsDialogMessage函数-MSG 消息结构-GetMessage函数-DispatchMessage函数
    Win11+VS2022配置编译VTK9.1
  • 原文地址:https://blog.csdn.net/weixin_55086241/article/details/127743423