java StringBuffer和StringBuilder

StringBuffer和StringBuilder

StringBufferStringBuilderString的增强类,String底层是一个final修饰的byte[]的数组,一旦创建不可改变,StringBufferStringBuilder的没有用final修饰,所以可变;

​ 两者都继承自AbstractStringBuilder类,实现了SerialzableComparableCharSequence接口;

​ 两者的区别在于:

  • StringBuffer中的方法都有:synchronized 关键字修饰。表示StringBuffer在多线程环境下运行是安全的。
  • StringBuilder中的方法都没有:synchronized 关键字修饰,表示StringBuilder在多线程环境下运行是不安全的。

§ 初始化

直接初始化

/*创建空字符串*/
StringBuilder sb = new StringBuilder();

指定初始大小

/*创建一个指定初始容量的字符串*/
StringBuilder sb = new StringBuilder(20);

用字符串初始化

/*创建有初始内容的字符串*/
StringBuilder sb = new StringBuilder("ahh");

§ 常用api

判断

int length():

返回字符串长度

int compareTo(StringBuffer another):

判断和另一个StringBuffer的大小关系

int capacity():

返回当前StringBuffer的容量

修改

StringBuffer append(String str):

追加类容到StringBuffer末尾,返回的是StringBuffer本身

void setCharAt(int index, char ch):

在index下标插入ch

StringBuffer deleteCharAt(int index):

删除下标处的内容,返回this

StringBuffer delete(int start, int end):

删除[start, end)之间的内容,返回this

StringBuffer insert(int offset, String str):

在index下标处插入str

String可重载int,char等基本类型

查找

参考StringcharAtindexOflastIndexOf

反转

StringBuffer reverse():

反转字符串,返回this

替换

StringBuffer replace(int start, int end, String str):

将[start, end)范围内替换为str

截取

String substring(int start, int end):

有end,截取[start, end)范围

无end,截取start开始到结尾

§ 使用原则

  • 如果要操作少量的数据,用String
  • 单线程操作大量数据,用StringBuilder
  • 多线程操作大量数据,用StringBuffer
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值