• JAVA基础(三十六)——常用类之StringBuffer类和StringBuilder类


    一、目录

    • StringBuffer类介绍
    • StringBuffer类和String类对比
    • StringBuffer类的构造器
    • String和StringBuffer相互转换
    • StringBuffer类常用方法
    • StringBuilder类介绍

    二、StringBuffer类介绍

    StringBuffer类是一个增强版的String类。

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

    重点:

    1. StringBuffer的直接父类是AbstractStringBuilder。
    2. StringBuffer实现了Serializable,即StringBuffer的对象可以序列化。
    3. 在父类中,AbstractStringBuilder有属性char[] value,与String不同的是,它不是final修饰的。该value数组存放字符串内容,因此是存放在堆中的。
    4. StringBuffer是一个final类,不能被继承。

    三、StringBuffer类和String类对比

    1. String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低。private fianl char value[];
    2. StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用更新地址(即创建新对象),效率较高。char[] value;并且是在堆中。

    四、StringBuffer类的构造器

    StringBuffer类常用的几个构造器:

    1. StringBuffer() 用于创建一个大小为16的char[],用于存放字符内容。
    2. StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。即对char[]大小进行指定。
    3. StringBuffer(str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。通过给一个String创建StringBuffer,char[]大小就是str.length + 16。

    五、String和StringBuffer相互转换

    String—>StringBuffer
    方式一:

    String s = "hello";
    StringBuffer b = new StringBuffer(s);
    
    • 1
    • 2

    方式二:

    String s = "hello";
    StringBuffer b = new StringBuffer();
    b.append(s);
    
    • 1
    • 2
    • 3

    StringBuffer—>String
    方式一:

    String s = b.toString();
    
    • 1

    方式二:

    String s = new String(b);
    
    • 1

    六、StringBuffer类常用方法

    1. 增 append
    2. 删 delete(start, end) 删除从start到end的字符,左闭右开
    3. 改 replace(start, end, string) 将start----end间的内容替换掉,不含end。
    4. 查 indexOf() 查找字串在字符串第一次出现的索引,找不到返回-1。
    5. 插 insert(index, str) 在索引为index的位置插入str,原来的字符往后移。
    6. 获取长度length

    七、StringBuilder类介绍

    1. 一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,优先采用该类,因为在大多数实现中,它比StringBuffer要快。
    2. 在StringBuilder上的主要操作是append和insert方法,可重载这些方法,以接受任意类型的数据。
    3. StringBuilder和StringBuffer均代表可变的字符序列。方法是一样的,所以使用和StringBuffer一样。
  • 相关阅读:
    vue3+vite+ts项目初建(仅个人习惯)
    python容器之字典
    安装rockylinux 9.2 版本虚拟机
    【k8s】三、k8s集群的初始化
    IOS使用Unity容器动态加载3D模型
    Maven学习(一)
    asp.net core如何获取客户端IP地址
    【paper】Cam2BEV论文浅析
    QT连接OpenCV库完成人脸识别
    springboot+shiro+layuimini实现后台管理系统的权限控制(三)利用shiro实现对用户的授权
  • 原文地址:https://blog.csdn.net/qq_37466661/article/details/126817529