Java中的StringBuffer类

目录

一、StringBuffer类介绍

二、StringBuffer中的内容存放在哪里?

二、StringBuffer类的体系图

三、String VS StringBuffer

1、String

2、StringBuffer

 四、StringBuffer的构造器

五、String和StringBuffer相互转换

Tips:

六、StringBuffer类的常用方法


一、StringBuffer类介绍

  • StringBuffer类是对String类的增强,它还是lang包中的,即java.lang.StringBuffer类。
  • StringBuffer类代表可变的字符串,可以对字符串的内容进行增删
  • StringBuffer类的很多方法都与String类相同,只不过StringBuffer是可变长度的。
  • StringBuffer是一个容器。
  • StringBuffer是final类,不能被继承。

下面是简单的代码:

package com.hspedu.Wrapper;

public class StringBuffer01 {
    public static void main(String[] args) {
        //1.StringBuffer 的直接父类是 AbstractStringBuilder
        //2.StringBuffer 实现了 Serializable接口,即StringBuffer的对象可以串行化,可以保存到文件or网络传输
        //3.父类 AbstractStringBuilder 中有属性 char[] value(不是final的),该value数组用于存放字符串内容
        //4.StringBuffer 类是一个final类,不能被继承
        //5.因为StringBuffer字符内容是存在char[] value,所以有变化的时候(增加/删除),不用每次都更换地址(即创建新对象),所以效率要高于String
        StringBuffer stringBuffer = new StringBuffer();
    }
}

二、StringBuffer中的内容存放在哪里?

答:字符串内容存放在父类 AbstractStringBuilder 中的 名为 value 的 char 类型数组中。(注意该数组不是final类型!因此字符串内容是存放在堆中,而非常量池)

二、StringBuffer类的体系图

三、String VS StringBuffer

1、String

String保存的是字符串常量,里面的值不能更改,因此每次String内容的更新,实际上都是更改地址,效率较低。(原因是它的字符串保存在final类型的char数组中)

2、StringBuffer

StringBuffer保存的是字符串变量, 里面的值可以更改,每次StringBuffer的更新其实是更新内容,而不用更新地址(除非空间不够时,才更新地址),效率较高。

 四、StringBuffer的构造器

下面用代码演示:

package com.hspedu.Wrapper;

public class StringBuffer01 {
    public static void main(String[] args) {
        //构造器的使用
        //1.创建一个 大小为16的 char[],用于存放字符内容(容量大小是16,是源码里面设定的)
        StringBuffer stringBuffer = new StringBuffer();

        //2.这种用的很少,就不演示了
        StringBuffer stringBuffer = new StringBuffer(CharSequence seq);

        //3.通过构造器指定 char[] 大小
        StringBuffer stringBuffer1 = new StringBuffer(100);

        //4.直接给一个String 创建 StringBuffer,char[] 大小就是str.length() + 16(即大小是把当前传入字符串的长度 + 16)
        StringBuffer hello = new StringBuffer("hello");
    }
}

五、String和StringBuffer相互转换

package com.hspedu.Wrapper;

public class StringAndStringBuffer {
    public static void main(String[] args) {
        //String->StringBuffer
        String str = "hello Tom";
        //方式1 使用构造器
        //注意:返回的值才是StringBuffer对象,对str本身没有影响(str仍然还是String类的对象)
        StringBuffer stringBuffer = new StringBuffer(str);
        //方式2 使用append方法
        StringBuffer stringBuffer1 = new StringBuffer();
        stringBuffer1 = stringBuffer1.append(str);

        //StringBuffer->String
        StringBuffer stringBuffer2 = new StringBuffer("edu");
        //方式1 使用 StringBuffer 类中重写的 toString 方法
        String string = stringBuffer2.toString();
        //方式2 使用构造器
        String string2  = new String(stringBuffer2);
    }
}

Tips:

什么是append()方法?

在英文中,append是一个动词,英英解释是:to add sth to the end of a piece of writing.

在Java中,该方法就是将某个字符串加到另一个字符串后面。

StringBuffer stringBuffer = new StringBuffer("我是中国人!");
stringBuffer.append("牛逼!");
sout(stringBuffer);

输出结果就是:我是中国人!牛逼!

六、StringBuffer类的常用方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m1m-FG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值