字符串缓冲区

字符串缓冲区

在学习String类时,API中说字符串缓冲区支持可变的字符串,什么是字符串缓冲区呢?接下来我们来研究下字符串缓冲区。

查阅StringBuffer的API,线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

原来StringBuffer是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符。并且能够对其中的字符进行各种操作。

 StringBuffer基本使用

StringBuffer的特点:

1、是一个字符串缓冲区,其实就是一个容器。

2、长度是可变,任意类型都行。注意:是将任意数据都转成字符串进行存储。

3、容器对象提供很多对容器中数据的操作功能,比如:添加,删除,查找,修改。

4、所有的数据最终变成一个字符串。

创建一个字符串缓冲区对象。用于存储数据。

StringBuffer sb = new StringBuffer();

添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。

String str =sb.append(true).append("hehe").toString();

sb.append("haha"); //添加字符串

sb.insert(2, "it");//在指定位置插入

sb.delete(1, 4);//删除

sb.replace(1, 4, "cast");

 

StringBuffer的练习

缓冲区的应用:无论多少数据,什么类型都不重要,只要最终变成字符串就可以使用StringBuffer这个容器

练习:int[] arr ={34,12,89,68};将一个int[]中元素转成字符串  格式 [34,12,89,68]

public static String toString_2(int[]arr) {

        StringBuffer sb = new StringBuffer();      

        sb.append("[");

        for (int i = 0; i < arr.length;i++) {

            if(i!=arr.length-1){

                sb.append(arr[i]+",");

            }else{

                sb.append(arr[i]+"]");

            }

        }      

        return sb.toString();

    }

 

StringBuffer和StringBuilder区别

查阅API发现还有一个StringBuilder类,它也是字符串缓冲区,它和StringBuffer的区别是什么呢?

阅读StringBuilder的API说明发现,一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

原来StringBuilder是线程不安全的,即就是在对容器操作的时候,不用去判断同步锁的问题,那么效率就高。并且API告诉我们优先采用StringBuilder类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值