StringBuffer类

本文详细介绍了Java中的StringBuffer类,包括其可变性、构造器、与String的区别以及常用方法如append、delete、replace等。StringBuffer在需要频繁修改字符串时相比String更高效,因为它避免了多次创建新对象。此外,还展示了如何在String和StringBuffer之间进行转换,以及如何利用StringBuffer进行字符串操作。
摘要由CSDN通过智能技术生成

目录

StringBuffer类

StringBuffer类的Diagram  

基本介绍

String VS StringBuffer

StringBuffer的构造器

String和StringBuffer的相互转换

StringBuffer类的常见方法



StringBuffer类

StringBuffer类的Diagram  

基本介绍

  • java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删

  • 很多方法与String相同,但StringBuffer是可变长度的

  • StringBuffer是一个容器

  • StringBuffer的直接父类是 AbstractStringBuilder

  • StringBuffer 实现了 Serializable接口,即StringBuffer的对象可以串行化

  • 在父类中 AbstractStringBuilder 有属性 char[] value; ,不是final类型,该value数组用来存放字符串的内容,是存放在堆中的。

  • StringBuffer 是final类,不能被继承

String VS StringBuffer

  1. String保存的是字符串常量,里面的值不能修改,每次String类的更新实际上就是更改地址(即每次创建新的对象),String的引用指向新的字符串常量对象,效率较低。//private final char value[];

  2. StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer类的更新实际上可以更新内容,不用每次更新地址。只有当数组空间不够时,才会去更改地址。(即不是每次创建新的对象) // 效率较高

StringBuffer的构造器

  • StringBuffer():默认创建一个大小为 16的 char[],用于存放字符内容

StringBuffer stringBuffer = new StringBuffer();
//构造器
public StringBuffer() {
    super(16);
}
  • StringBuffer(int capacity):指定数组 char[] 的大小

StringBuffer stringBuffer1 = new StringBuffer(100);
//构造器
public StringBuffer(int capacity) {
    super(capacity);
}
  • StringBuffer(String str):通过给一个String 创建 StringBuffer,char[] 大小就是 str.length() + 16

StringBuffer stringBuffer2 = new StringBuffer("hello");
//构造器
public StringBuffer(String str) {
    super(str.length() + 16);
    append(str);
}

String和StringBuffer的相互转换

String -------> StringBuffer

  • 方式1:

String str = "hello tom";
StringBuffer stringBuffer = new StringBuffer(str);
  • 方式2:

StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);

StringBuffer-------> String

  • 方式1:

StringBuffer stringBuffer = new StringBuffer("你好");
String s = stringBuffer.toString();
  • 方式2:

StringBuffer stringBuffer = new StringBuffer("你好");
String s1 = new String(stringBuffer);

StringBuffer类的常见方法

  • append():相当于 ”+“ ,将指定的字符串追加到此字符序列的后面

public class Demo01 {
    public static void main(String[] args) {
​
        StringBuffer s = new StringBuffer("hello");
        s.append(',');
        s.append("张三").append("舅舅");
        System.out.println(s);
​
    }
}

  • delete():删除指定区间的字符串,左闭右开

public class Demo01 {
    public static void main(String[] args) {
​
        StringBuffer s = new StringBuffer("hello");
        s.delete(2,4);
        System.out.println(s);
​
    }
}

  • replace():替换指定区间的字符串,左闭右开

public class Demo01 {
    public static void main(String[] args) {
​
        StringBuffer s = new StringBuffer("hello,张三");
        s.replace(6,8,"周杰");
        System.out.println(s);
​
    }
}

  • indexOf():获取字符(或字串)在字符串中第一次出现的索引,索引从0开始,如果找不到,则返回 -1

public class Demo01 {
    public static void main(String[] args) {
​
        StringBuffer s = new StringBuffer("hello,张三");
        int a= s.indexOf("张三");
        int b = s.indexOf("l");
        int w = s.indexOf("w");
        System.out.println(a);
        System.out.println(b);
        System.out.println(w);
​
    }
}

 

  • insert():在指定索引位置插入字符(串),原来该索引的字符(串)自动后移

public class Demo01 {
    public static void main(String[] args) {
​
        StringBuffer s = new StringBuffer("hello,张三");
        StringBuffer a = s.insert(2, "Jay");
        System.out.println(a);
​
    }
}

  • length():获取字符的个数,即字符串的长度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值