java基础(三十一)Stringbuffer和StringBuilder

【StringBuffer】

构造方法:
StringBuffer();
构造一个不带字符串的缓冲区,初始化容量为16个字符.当超过16个字符时他会复制一个新的字符数组,然后把原来的字符串赋值过去(Stringbuffer内部用字符数组实现)。
StringBuffer(int capacity);
构造一个不带字符串,但具有指定容量的字符串缓冲区。初始化一个刚刚好的,就不用做多余复制数组的动作
StringBuffer(String s);
构造一个不带字符串的缓冲区,并将其内容初始化为指定的字符串内容

具备的功能

1.添加

stringBuffer append(data);
stringBuffer insert(index,data);


用法:
    StringBuffer sb=new StringBuffer();
    sb.append("1").append("3");
    sb.insert(1,"2");
输出 sb:123

注意:  StringBuffer sb=new StringBuffer();
    StringBuffer s1=sb.append("1");

sb==s1;这是因为StringBuffer.append();返回的是自身

2.删除


stringBuffer delete(start,end);包含start,不包含end

stringBuffer deleteCharAt(int index);删除指定位置


用法:
    StringBuffer sb=new StringBuffer("abcd");
删除:    
    sb.delete(1,3);
    输出 sb:ad

清空:   sb.delete(0,sb.length());


3.查找

char charAt(index);

int indexOf(string)

int lastIndexOf(string)

4.修改
stringBuffer repalce(start,end,string)

void setCharAt(index,char);


优点:线程安全
缺点:效率慢

【StringBuilder】

jdk1.5以后出现了和StringBuffer一模一样的对象,就是StringBuilder


它的用法和StringBuffer一样。

优点:效率快
缺点:线程不安全


一般来说我们实际开发中都是用StringBuilder

为什么会出现线程安全问题呢?


在StringBuffer中添加和删除的方法都加了同步,所以它是线程安全的,但是每次添加或者删除都要判断锁

所以它效率低

而StringBuilder则相反


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值