String

本文最后更新于 2025年5月20日 14:24

String类常用方法

  • length() 返回字符串长度
  • charAt(int index) 返回指定位置字符
  • indexOf(String str) 返回指定子字符串第一次出现的位置
  • trim() 去除前后空格
  • split(String regex) 根据正则表达式分割
  • valueOf(Object obj) 返回指定对象的字符串形式
  • format(String format, Object... args) 返回格式化后的字符串,类似 printf

String为什么不可变

因为 String 类是 final 的,这保证他不会被子类修改。

并且 String 类中用来存储字符的 char 数组(Java9 之后为了节约空间改为 byte 数组)是 private final 的,类内也没有暴露修改该数组的方法。

综上 String 是不可变的。

StringBuilder StringBuffer

StringBuilder 和 StringBuffer 都继承于 AbstarctStringBuilder, AbstarctStringBuilder 中包含如 append、indexOf 等操作字符串的方法,StringBuffer 内的方法或者对其调用的方法都是加锁的,所以是线程安全的;StringBuilder 内的方法或者对其调用的方法是不加锁的,所以是非线程安全的。

综上我们可以得出String、StringBuffer、StringBuilder的使用场景如下:

  • 操作少量数据:String
  • 单线程操作大量数据:StringBuilder
  • 多线程操作大量数据:StringBuffer

String
http://example.com/2025/02/27/String/
作者
Moonike
发布于
2025年2月27日
更新于
2025年5月20日
许可协议