• 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
  • 相关阅读:
    Spring的AOP开发-基于xml配置的AOP
    Ubuntu软件包升级失败的终极修复方法
    无代码开发进程中心入门教程
    【案例 5-4】 字符串转换为二进制
    CleanMyMac X2023标准版解锁完整版本Mac电脑清理专家
    http请求头部(header)详解
    墨者学院 Apache Struts2远程代码执行漏洞(S2-032)
    HTML+CSS+JS制作一个迅雷看看电影网页设计实例 ,排版整洁,内容丰富,主题鲜明,简单的网页制作期末作业
    Java ~ Reference ~ SoftReference
    Cannot deserialize value of type `java.util.Date` from String
  • 原文地址:https://blog.csdn.net/weixin_55086241/article/details/127743423