stringbuffer java API_JAVA常用API:StringBuffer类

String类功能非常强大,但String类是不可变的,一旦定义其值就是不可变的,这样就会对内存空间造成浪费,JAVA就开发了一个全新的类StringBuffer类,字符串缓冲区。线程安全的可变字符序列,用于提高字符串的操作效率。

内部采用了可变数组的方式来实现的,类的内部定义了数组,此数组不是final修饰的。

public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializeable,Charsequence{

super(16); //父类构造器,创建了一个16个字符的char数组

}

继承自父类AbstractStringBuilder

abstract class AbstractStringBuilder{

char[] value;

//构造器

ABstractStringBuilder(int capacity){

value = new char[capacity];

}

}

//数组是可变的,默认容量是16个字符

StringBuffer无论怎么操作,内部只会有一个char[]数组,而String会产生多个不可变的char[]数组。

StringBuffer的构造方法

1. 空参构造方法,构造一个不带字符的缓冲区,初始容量为16个字符

StringBuffer(); -->super(16);

2. StringBuffer(CharSequence seq);构造一个字符串缓冲区,包含与指定的CharSequence(字符序列)相同的字符。

该缓冲区初始容量为16加上CharSequence参数的长度,如果CharSequence的长度小区或等于0,则返回16个字符长度的空缓冲区

3. StringBuffer(String str); 构造一个字符串缓冲区,包含传入的str字符串,其长度为16+str.length(), 传null会报错nullPointerException

4. StringBuffer(int capacity); 构造一个不带字符,但具有capacity容量的字符串缓冲区,capacity不能为负数。

StringBuffer的方法

1. append(参数); 向StringBuffer对象后追加任意类型的数据,返回StringBuffer。它有多个重载方法,可以追加int string char object array等

StringBuffer buffer = new StringBuffer();

buffer.append(89);

2. capacity(); 返回int capacity,即缓冲区的容量大小

StringBuffer buffer = new StringBuffer("abc");

buffer.capacity();

返回19;  原本16的容量加上字符串长度

3. charAt(int index); 返回缓冲区指定索引处的char字符

StringBuffer buffer = new StringBuffer("abc");

如果要取得'b',则:buffer.charAt(1);

注意:StringBuffer的容量和长度概念,长度指实际存在的字符长度,容量指的是可以装的字符个数。

故StringBuffer("abc");容量为19,但长度为3,这个一定要弄清楚。否则在使用charAt的时候,一不小心就会越界。

4. delete(int start,int end);移除此缓冲区指定范围中的字符,包头不包尾。返回StringBuffer

StringBuffer buffer = new StringBuffer("abcdef");

buffer.delete(1,5);   abcdef

结果:af

将缓冲区所有字符全删除 :buffer.delete(0,buffer.length());

5. insert(int index,任意参数数据);  将任意类型数据插入到缓冲区指定位置

StringBuffer buffer = new StringBuffer("abcdef");

buffer.insert(3,9.5);

结果是:abc9.5def //将9.5放到3索引上

6. replace(int start,int end,string str); 将指定范围内的内容替换为指定的字符串,不包含尾

7. reverse(); 翻转缓冲区字符。

StringBuffer = new StringBuffer("abcd");

buffer.reverse()'

结果:dcba

8. toString(); 将缓冲区中的所有字符变成字符串,继承自Object并重写。返回值为String对象

StringBuilder与StringBuffer用法完全一样

StringBuffer为线程安全的序列,多线程安全

StringBuilder如果被单线程使用的时候,建议优先使用StringBuilder,速度要快很多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值