Java重修笔记 第三十三天 StringBuffer类、StringBuild类

  • StringBuffer类特性

1. 它父类的char value[]属性不是final的,不再存放在字符串常量池

2. 和String类相比,StringBuffer的更新不用每次都创建新的对象,只有空间不够的时候才会更新地址,效率比较高

  • StringBuild类特性

1. StringBuild类与StringBuffer类的API相互兼容,但是StringBuild类不是线程安全的,如果可能,优先采用效率较高的StringBuild类,例如在字符串缓冲区被单个线程使用的时候

  • StringBuffer和String的相互转换

1. String ---> StringBuffer

String str = "hello";
// String 转 StringBuffer
StringBuffer stringBuffer01 = new StringBuffer(str);
StringBuffer stringBuffer02 = new StringBuffer();
stringBuffer02.append(str);

2. StringBuffer ---> String

// StringBuffer 转 String
StringBuffer stringBuffer = new StringBuffer("123abc");
String s = stringBuffer.toString();
String s1 = new String(stringBuffer);

  • StringBuffer类的常用方法

1. public StringBuffer append(String str)

        将字符串添加进StringBuffer后面

2. public StringBuffer delete(int start, int end)

        删除索引包括start,到不包括end之间的字符串,左开右闭

3. public StringBuffer replace(int start, int end, String str) 

        将从包括start,到不包括end之间的字符串替换为str,左开右闭

4. public int indexOf(String str)

        返回该字符串第一次出现的索引

5. public StringBuffer insert(int dstOffset, CharSequence s)

        在索引dstOffset的位置后面插入s

  • String、StringBuild和StringBuffer的比较

1. String代表不可变字符序列,其内部的value[]字符数组是被final修饰的。 StringBuild和StringBuffer代表可变字符序列,其内部的value[]字符数组没有被final修饰,方法也一样。

2. StringBuild效率最高但线程不安全,StringBuffer效率较高线程安全,String效率最低复用率高。

  • String、StringBuild和StringBuffer的运用场景

1. 如果字符串有大量修改操作,用StringBuild和StringBuffer

2. 如果字符串有大量修改操作,并且单线程的情况用StringBuild

3. 如果字符串有大量修改操作,并且多线程的情况用StringBuffer

4. 如果字符串很少修改,并且被多个对象引用,用String,例如配置信息等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值