StringbBuilder与StringBuffer

StringBuilder

用于表示可变字符串的类,是非线程安全的,建议在单线程下使用

StringBuffer

用于表示可变字符串的类,是线程安全的,建议在多线程环境下使用

StringBuilder和StringBuffer中的方法都一致,只不过StringBuffer中的方法使用了synchronized修饰,表示是一个同步方法,在多线程环境下不会出现问题

构造方法(这里以StringBuilder为例)

常用构造方法作用
StringBuilder()创建一个大小为16的字符串数组,表示一个空白字符
StringBuilder(int i)创建一个大小为 i 的字符串数组,表示一个空白字符
StringBuilder(String str)创建一个str长度+16的字符串数组,将str添加到其中,类似与String str = "值"

普通方法(这里以StringBuilder为例)

常用方法返回值作用备注
append(Object obj)StringBuilder将任意类型的参数添加到原可变字符串末尾
delete(int start,int end)StringBuilder在原可变字符串中删除索引以start开始到end结束的内容包含start,不包含end
sb.deleteCharAt(int index);StringBuilder在原可变字符串中删除索引为index的内容
sb.insert(int offset,Object obj);StringBuilder在原可变字符串中以索引offset开始插入obj的内容
replace(int start,int end,String str);StringBuilder在原可变字符串中将索引以start开始到end结束的内容,替换成为str包含start,不包含end
reverse();StringBuilder将原可变字符串倒序
scodePointAt(int idnex);int返回指定索引index的ASCII码值

注意

以上表格中的方法都是直接操作同一个字符串对象,每次调用方法后原字符串都会发生变化

StringBuilder和StringBuffer中没有重写equals方法,判断可变字符串值是否相同可以转为String再使用equals方法

特殊的将可变字符串转换为String的方式 : 直接加一个""

StringBuilder sb = new StringBuilder();
sb.append("a123456789");
String str = sb + "";

以下代码输出true

StringBuilder sb = new StringBuilder();
sb.append("a123456789");
StringBuilder sb2 = new StringBuilder();
sb2.append("a123456789");
System.out.println(String.valueOf(sb).equals(String.valueOf(sb2)));

String,StringBuffer,StringBuilder的异同

    相同点

        1.都可以表示字符串,操作字符串

        2.有相同的方法,如: indexOf().charAt()

        3.都是被final修饰的类,不能被继承

    不同点

        1.String定义的字符串是一个常量,不可变.StringBuffer,StringBuilder定义的字符串是可变的.

       2. String类中的方法调用后不会改变原本字符串的值,StringBuffer,StringBuilder调用方法后会改变字符串的值

        3.StringBuffer 是线程安全的,其中的方法是被synchronized修饰的,StringBuilder,是非线程安全的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值