Java String类(3):StringBulider和StringBuffer详解

StringBuilder的介绍

由于String的不可更改的特性,为了方便字符串的修改,Java中又提供了StringBuilder和StringBuffer类。这两个类大部分功能是相同的,我来介绍一下StringBulider常用的一些方法。如果想要查询其它的方法,可以查询API。

方法说明
StringBuffer append(String str)

在尾部追加,相当于String的+=,可以追加:boolean, char, char[],

double, float, int, long, Object, String, StringBuff的变量

char charAt(int index)获取index位置的字符
int length()获取字符串的长度
int capacity()获取底层保存字符串空间总的大小

void ensureCapacity(int mininmumCapacity)参数:

该方法将所需最小容量作为参数

扩容
void setCharAt(int index, char ch)将index位置的字符设置为ch
int indexOf(String str)返回str第一次出现的位置
int indexOf(String str, int fromIndex)从fromIndex位置开始查找str第一次出现的位置
int lastIndexOf(String str)返回最后一次出现str的位置
int lastIndexOf(String str, int fromIndex)从fromIndex位置开始寻找str最后出现的位置
StringBuffer insert(int offset, String str)在offset的位置插入:八种基类类型&String类型&Object类型数据
StringBuffer deleteCharAt(int index)删除index位置的字符
StringBuffer delete(int start, int end)删除[start, end)之间的字符
StringBuffer replace(int start, int end, String str)将[start, end)之间的字符置换为str
String substring(int start)从start开始一直到末尾的字符以String的方式返回
String substring(int start, int end)将[start, end)范围内的字符以String的方式返回
StringBuffer reverse()反转字符串
String toString()将所有的字符按照String的方式返回

下面举一个长点的例子来介绍一下部分方法:

 public static void main(String[] args) {
        StringBuilder sb1 = new StringBuilder("hello");
        StringBuilder sb2 = sb1;

        //追加:即尾插->字符,字符串,整型数字
        sb1.append(' '); //hello
        sb1.append("world"); //hello world
        sb1.append(123); //hello world123
        System.out.println(sb1);
        System.out.println(sb1 == sb2);//true

        System.out.println(sb1.charAt(0));//获得0字号位上的字符h

        System.out.println(sb1.length());//获取字符串的有效长度:14

        System.out.println(sb1.capacity());//获得底层数组的总大小

        sb1.setCharAt(0, 'H');//设置任意位置上的字符Hello world123

        sb1.insert(0, "Hello world!!!");//Hello world!!!Hello world123
        System.out.println(sb1);

        System.out.println(sb1.indexOf("Hello"));//获得Hello第一次出现的位置:0
        System.out.println(sb1.lastIndexOf("Hello"));//获得Hello最后一次出现的位置:14

        sb1.deleteCharAt(0);//删除首字符
        sb1.delete(0, 5);//删除[0,5)之间的字符

        String str = sb1.substring(0, 5);//截取[0,5)区间中的字符并以String类型返回
        System.out.println(str);

        sb1.reverse();//字符串逆转
        str = sb1.toString();//将StringBuffer的方式返回
        System.out.println(str);
    }

从上述例子可以看出:String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder内容可以修改。频繁使用字符串的情况下考虑使用StringBuilder.

注:String和StringBuilder类不能直接转换。如果想要互相转换,可以采用以下原则:

1.String变为StringBuilder:利用StringBuilder的构造方法或者append()方法

2.StringBuilder变为String:调用toString()方法

常见问题

1.String,StringBuffer,StringBuilder之间的区别:

(1)String的内容不可修改,StringBuffer和StringBuilder的内容可以修改

(2)StringBuffer和StringBuilder的大部分功能是相似的

(3)StringBuffer采用同步处理,属于线程安全操作(StringBuffer前面有synchronized关键字以保证线程安全);而StringBuilder未采用同步处理,属于线程不安全操作

(4)StringBuffer性能较差,StringBuilder性能较好

2.

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值