【java基础】String、StringBuffer和StringBuilder

1. CharSequence接口

String、StringBuffer和StringBuilder 都实现 CharSequence接口

在JDK1.4中,引入了CharSequence接口,实现了这个接口的类有:CharBuffer、String、StringBuffer、StringBuilder这个四个类。

2. 运算速度

通常情况下:StringBuilder > StringBuffer > String

如下的代码写法形式速度会很慢,JVM会不断地创建和回收对象来进行操作。

String str1 = "abc";
String str2 = "de";
String str = str1 + str2;

3. 线程安全性

StringBuilder(非线程安全)

而StringBuilder的方法没有该关键字修饰,所以不能保证线程安全性。是JDK1.5新增的,该类提供一个与StringBuffer兼容的API,但不能保证同步,所以在性能上较高。该类被设计用作 StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer 要快。两者的方法基本相同。

StringBuffer(线程安全的)

StringBuffer中大部分方法由synchronized关键字修饰,在必要时可对方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致,所以是线程安全的。类似于String的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。StringBuffer上的主要操作是 append 和 insert方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。

4. 适用于场景

String:适用于少量的字符串操作。
StringBuilder:适用于单线程下在字符串缓冲区进行大量操作。
StringBuffer:适用于多线程下在字符串缓冲区进行大量操作。

5. 常用方法

5.1 String

  1. charAt(int index)
    取下标为 index 的字符,返回为 char

  2. substring(int beginIndex)
    截取字符串的一部分,有很多重载

  3. split(String regex)
    以 regex 为分隔符组成数组,返回为 String[]

String str = "ab,cde";
String[] split = str.split(",");
  1. replace(CharSequence target, CharSequence replacement)

CharSequence 是个接口,有 CharBuffer、String、StringBuffer、StringBuilder这个四个类。

  1. replaceFirst(String regex, String replacement)

  2. replaceAll(String regex, String replacement)
    替换字符串,replace 和 replaceAll 好像没区别

  3. concat(String str)
    好像跟 “+” 一样,拼接字符串

  4. toCharArray()
    将 字符串 转为 char[]

  5. String.valueOf(xxx)
    静态方法,将 xxx 转为 String,返回值为 String

5.2 StringBuffer

  1. append(String str)
    拼接字符串,有很多重载

  2. replace(int start, int end, String str)
    跟 String 的 replace 有点不一样

  3. reverse()
    字符串颠倒

  4. insert(int offset, Object obj)
    插入字符串

  5. delete(int start, int end)
    删除字符串

  6. deleteCharAt(int index)
    删除一个字符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值