javaSE复习之——StringBuffer类

StringBuffer的概述

1、它是字符串缓冲区(容器),底层默认是长度为16的字符数组

2、StringBuffer是线程安全的,StringBuilder是线程不安全

3、线程安全速度更,线程不安全速度更

StringBuffer与String的区别

1、String赋的值它是不能被改变的,只能丢弃重新创建,如果字符拼接过多会产生过多的垃圾

2、StringBuffer赋的值是可以被改变的,类似字符拼接建议用这个类,因为不会产生过多的垃圾

2、虽然它们都是引用数据类型,但是String做参数传递时是和基本数据类型一样的,而StringBuffer传递的只是对创建对象的引用,也就是地址值。

StringBuffer的方法

  • 属性获取:

    .capacity()
    返回当前容量

    .length()
    返回实际长度

  • 数据添加:

    .append()
    把任何数据传入字符串缓冲区,然后返回缓冲区对象本身。

    .insert(索引,字符串)
    在任意位置之后将任意类型数据插入字符串缓冲取内,返回本身。

  • 数据删除:

    .deleteCharAt()
    删除任意索引的数据,返回本身。

    .delete(索引1,索引2)
    删除从索引1开始到索引2位置的数据,返回本身。(包含头不包含尾)

  • 数据替换反转:

    .reverse()
    字符反转

    .replace(开始索引,结束索引,要替换的数据)>
    字符替换

  • 数据截取:(截取后返回的数据不是表示容器本身,而是返回一个String)

    .subString(索引)
    从索引开始,截取到字符串末尾。

    .subString(开始,结尾)
    从开始位置截取字符串到结尾位置,不包括结尾索引。

StringBuffer的构造方法特点

1、无参构造默认容量为 16个字符

2、传入整数,比如传入10,那么这个容器的容量就为10个字符

3、传入一个字符串,比如传入:啊啊,那么实际长度为4,字符串缓冲区容量为20

4、如果内部缓冲区溢出,那么容量自动增大。

5、StringBuffer重写了toString()方法,显示的是它的属性值,也就是它的元素。

StringBuffer注意事项

1、不要利用重新创建另一个对象来试图清空容器,这只是引用了另一个容器对象而已,之前的那个容器并没有被清空,可以利用delete方法清空容器。

2、因为String与任意字符串相加的底层实现就是使用容器,并且String的值是不能修改的,它只能把之前的数据做垃圾处理重新创建一个数据,这样会不断的产生垃圾,所以在类似 字符串数组 转换成 字符串 或者 字符串拼接(String s = s1 + s2;) 的例程中使用容器最好。

StringBuffer与String的互转:

  • StringBuffer转String

    1、创建一个String对象,把容器传进去。

    2、使用toString()方法。

    3、使用subString()方法。

  • String转StringBuffer

    1、创建一个StringBuffer对象,传入字符串即可。

    2、通过append()方法把字符串加入到容器内。