StringBuilder和StringBuffer

类似于String,但可变。

一般,能使用String的地方就能使用StringBuilder和StringBuffer。可以给一个StringBuilder或StringBuffer中添加、插入或追加新的内容。

StringBuilder和StringBuffer区别:

StringBuffer  类中修改缓冲区的方法是同步(同一时间只能有一个任务来修改访问)的,这意味着只有一个任务被允许执行该方法,除此之外两者非常类似

如果是多任务并发访问,就使用StringBuffer,因为这种情况下需要同步以防止StringBuffer损坏.

如果是单任务访问,使用StringBuilder会更有效。

StringBuilder构造器
构造器描述
StringBuilder()构建一个容量为16的空字符串构建器
StringBuilder(capacity:int)构建一个指定容量的字符串构建器
StringBuilder(s:String)构建一个指定字符串的字符串构建器
修改StringBuilder中字符串的方法
方法描述
append(data:char[]):StringBuilder追加一个字符数组到字符串构建器
append(data:char[], offset:int, len:int):StringBuilder追加data中的子数组到字符串构建器
append(v:aPrimitiveType): StringBuilder将一个基本类型值作为字符串追加到字符串构建器
append(s: Sting):StringBuilder追加一个字符串到字符串构建器
delete(starIndex:int, endIndex:int): StringBuilder删除从startIndex到endIndex-1的字符
deleteCharAt(index: int): StringBuilder删除给定下标位置的字符
insert(index:int, data:char[], offset:int, len:int):StringBuilder在字符串构建器的给定下标位置插入数组data的子数组
insert(offset:int, data:char[]):StringBuilder向构建器的offset位置插入data
insert(offset:int, aPrimitiveType): StringBuilder向该字符串构建器插入一个转换为字符串的值
insert(offset:int,s:String): StringBuilder在该构建器指定的offset位置插入一个字符串
replace(startIndex:int, endIndex:int, s: String): StringBuilder

将该构建器从startIndex到endIndex-1的位置的字符替换为给

定的字符串

reverse(): StringBuilder倒置构建器中的字符
setCharAt(index: int, ch:char):void将该构建器的指定下标位置设为新的字符     
public class StringBuilderTest {
    public static void main(String[] args) {
        char[] data1 = {'2', '3', '4', '5', '6', '7', '8', '9', '0'};
        char[] data2 = {'z', 'y', 'w'};
        StringBuilder stringBuilder = new StringBuilder();  // 构造一个其中没有字符且初始容量为 16 个字符的字符串构建器。
        StringBuilder stringBuilder1 = new StringBuilder(20);  // 构造一个字符串构建器,其中没有字符,初始容量由容量参数指定。如果参数小于0则NegativeArraySizeException
        StringBuilder stringBuilder2 = new StringBuilder("sfasf");  // 构造一个初始化为指定字符串内容的字符串构建器。字符串生成器的初始容量是 16 加上字符串参数的长度。

        System.out.println("stringBuilder的长度:" + stringBuilder.length());  // 0
        System.out.println("stringBuilder1的长度:" + stringBuilder1.length());  // 0
        System.out.println("stringBuilder2的长度:" + stringBuilder2.length());  // 5

        stringBuilder.append(1);
        // 将 char 数组参数的子数组的字符串表示形式附加到此序列。
        //char 数组 str 的字符,从索引偏移量开始,按顺序附加到此序列的内容中。这个序列的长度增加了 len 的值。
        // offset: the index of the first char to append.
        // len – the number of chars to append.
        stringBuilder.append(data1, 0, 2);
        stringBuilder.append(data1, 2, 2);
        stringBuilder.append("abcefg123456789");  // 字符长度超过16,自动扩展
        // delete(starIndex:int, endIndex:int):StringBuilder
        stringBuilder.delete(0, 2);
        stringBuilder.deleteCharAt(0);

        // insert()
        // offset 迁移量,不是下标,是指从原字符串的第几个开始(从1开始)
        stringBuilder.insert(10, data2);
        stringBuilder.insert(1, data1, 1, 2);  // 这里的offset是data1的下标

        // reverse()
        stringBuilder.reverse();

        System.out.println(stringBuilder);  // 9876543wyz21gfecba5434

        System.out.println("stringBuilder的长度:" + stringBuilder.length());  // 22
        System.out.println("stringBuilder1的长度:" + stringBuilder1.length());  // 0
        System.out.println("stringBuilder2的长度:" + stringBuilder2.length());  // 5
    }
}
其他方法
方法描述
toString(): String从字符串构建器返回一个字符串对象
capacity():int返回该字符串构建器的容量
charAt(index: int): char返回指定下标位置的字符
length(): int返回该构建器中的字符数
setLength(newLength:int):void设置该构建器的新长度
substring(startIndex: int): String返回从startIndex开始的子字符串
substring(startIndex: int, endIndex:int): String返回从startIndex到endIndex-1的子字符串
trimToSize(): void减少用于字符串构建器的存储大小

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值