StringBuffer类_StringBuilde类

StringBuffer类/线程安全 可变字符串/

概述

我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题线程安全的可变字符序列 。

当向StringBuffer中添加内容时,是将内容添加到底层的数组中,数组没有被final修饰,当数组装满时,会创建一个新的数组,将新数组地址给底层数组,StringBuffer对象是不会改变的。

构造方法

public StringBuffer()

public StringBuffer(String str)

添加功能

public StringBuffer append(String str) //向末尾追加内容

new StringBuffer();//默认底层char数组长度是16
new StringBuffer("abcd")//长度20=默认数组长度16+4个字符串长度;
​
StringBuffer  stringBuffer  =  new StringBuffer("abcd");
              stringBuffer.append("efg111");
              stringBuffer.append("efg222");
  System.out.println(stringBuffer);
  
 结果:abcdefg111efg222
​

public StringBuffer insert(int offset,String str) //向指定地方插入字符串

StringBuffer  stringBuffer  =  new StringBuffer("abcd");
              stringBuffer.insert(2,"xx");
  System.out.println(stringBuffer);
​
结果:abxxcd

删除功能

public StringBuffer deleteCharAt(int index)

StringBuffer  stringBuffer  =  new StringBuffer("abcd");
              stringBuffer.deleteCharAt(1);
  System.out.println(stringBuffer);
​
结果:acd

public StringBuffer delete(int start,int end) //删除指定区域的内容 包含开始,不包含结尾

StringBuffer  stringBuffer  =  new StringBuffer("abcdefg");
              stringBuffer.delete(0,3);
  System.out.println(stringBuffer);
​
结果:defg

public StringBuffer replace(int start,int end,String str) //替换

StringBuffer  stringBuffer  =  new StringBuffer("abcdefg");
              stringBuffer.delete(0,3,xxx);
  System.out.println(stringBuffer);
​
结果:xxxdefg

反转功能

public StringBuffer reverse()//逆序字符串

StringBuffer  stringBuffer  =  new StringBuffer("abcdefg");
              stringBuffer.delete(0,3,xxx);
  System.out.println(stringBuffer);
​
结果:gfedcba

截取功能

public String substring(int start)

StringBuffer  stringBuffer  =  new StringBuffer("abcdefg");
  String sub = stringBuffer.substring(2);
  System.out.println(sub);
​
结果:cdefg

public String substring(int start,int end)

StringBuffer  stringBuffer  =  new StringBuffer("abcdefg");
  String sub = stringBuffer.substring(2,5);
  System.out.println(sub);
​
结果:cde

● 截取功能和前面几个功能的不同

返回值类型是String类型,本身没有发生改变

StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程安全的

StringBuilder类/多线程不安全 可变字符串/

String类StringBuffer类StringBuilder类区别

String :底层都是数组实现 final char[ ] 值不能改变,改变后悔创建一个新的对象

              是字符常量,适用于少量的字符串操作的情况

StringBuffer : 线程是安全的,可变字符串 char[ ]

              适用于单线程下在字符缓冲区进行大量操作的情况

StringBuilder :多线程不安全 ,可变字符串

              适用多线程下在字符缓冲区进行大量操作的情况

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值