跳转至

Java 字符串详解(方法签名 + 版本说明版)

一、前言

String 是 Java 中最常用的类之一,表示不可变的字符串。
此外,还有 StringBuilderStringBufferStringJoiner 等辅助类, 用于提高字符串拼接与处理的性能与灵活性。


二、String 类

1. 基本特性

  • String不可变对象,每次修改都会生成新的字符串实例。
  • 字符串常量存储在字符串常量池中。

2. 常用构造方法

  • public String():创建空字符串。
  • public String(String original):复制已有字符串内容。
  • public String(char[] value):从字符数组创建字符串。
  • public String(byte[] bytes):从字节数组创建字符串。

3. 常用方法(附版本说明)

  • public int length():返回字符串长度。
  • public boolean isEmpty():判断字符串是否为空。
  • public char charAt(int index):返回指定索引处字符。
  • public int indexOf(String str):返回子串首次出现位置。
  • public int lastIndexOf(String str):返回子串最后出现位置。
  • public boolean equals(Object anObject):比较字符串内容。
  • public boolean equalsIgnoreCase(String anotherString):忽略大小写比较。
  • public boolean contains(CharSequence s):判断是否包含子串。
  • public boolean startsWith(String prefix):判断是否以指定前缀开头。
  • public boolean endsWith(String suffix):判断是否以指定后缀结尾。
  • public String substring(int beginIndex, int endIndex):截取子串。
  • public String concat(String str):拼接字符串。
  • public String replace(CharSequence target, CharSequence replacement):替换子串。
  • public String replaceAll(String regex, String replacement):使用正则替换所有匹配项。
  • public boolean matches(String regex):判断是否匹配正则表达式。
  • public String[] split(String regex):根据正则切割字符串。
  • public String trim():去除前后空白。
  • public String toUpperCase():转换为大写。
  • public String toLowerCase():转换为小写。
  • public static String format(String format, Object... args):格式化输出。
  • public static String join(CharSequence delimiter, CharSequence... elements):使用分隔符连接字符串。
  • public String intern():返回常量池中的字符串引用。

示例

String name = "安信";
String result = name.concat(" 株式会社").toUpperCase();
System.out.println(result); // 安信 株式会社

三、StringBuilder 类

1. 概述

StringBuilder 是一个可变的字符串容器,效率高于 String,但非线程安全。

2. StringBuilder常用构造方法

  • public StringBuilder():创建空容器。
  • public StringBuilder(String str):使用初始字符串。

3. 常用方法

  • public StringBuilder append(String str):追加字符串。
  • public StringBuilder insert(int offset, String str):在指定位置插入字符串。
  • public StringBuilder delete(int start, int end):删除指定区间。
  • public StringBuilder deleteCharAt(int index):删除单个字符。
  • public StringBuilder replace(int start, int end, String str):替换区间内容。
  • public StringBuilder reverse():反转字符序列。
  • public int capacity():返回当前容量。
  • public void ensureCapacity(int minimumCapacity):确保容量足够。
  • public void setCharAt(int index, char ch):修改指定位置字符。
  • public String substring(int start, int end):提取子串。
  • public String toString():转换为 String。

StringBuilder示例

StringBuilder sb = new StringBuilder("Java");
sb.append(" Programming").insert(4, " SE");
System.out.println(sb.reverse()); // gnimmargorP ES avaJ

四、StringBuffer 类

1. StringBuffer概述

StringBufferStringBuilder 功能类似,但它是线程安全的,适合多线程环境。

2. StringBuffer常用构造方法

  • public StringBuffer():创建空缓冲区。
  • public StringBuffer(String str):使用初始字符串。

3. StringBuffer常用方法

  • public synchronized StringBuffer append(String str):追加字符串。
  • public synchronized StringBuffer insert(int offset, String str):插入字符串。
  • public synchronized StringBuffer delete(int start, int end):删除区间内容。
  • public synchronized StringBuffer reverse():反转字符序列。
  • public synchronized int capacity():返回容量。
  • public synchronized void ensureCapacity(int minimumCapacity):确保容量。
  • public synchronized String toString():转为字符串。

StringBuffer示例

StringBuffer buffer = new StringBuffer("Java");
buffer.append(" SE");
buffer.insert(4, " 8");
System.out.println(buffer); // Java 8 SE

五、StringJoiner 类

1. StringJoiner概述

StringJoiner 是 JDK 1.8 新增类,用于高效地拼接带分隔符的字符串。

2. StringJoiner构造方法

  • public StringJoiner(CharSequence delimiter):指定分隔符。
  • public StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix):指定分隔符、前缀与后缀。

3. StringJoiner常用方法

  • public StringJoiner add(CharSequence newElement):添加元素。
  • public int length():返回拼接后长度。
  • public StringJoiner merge(StringJoiner other):合并另一个 Joiner。
  • public StringJoiner setEmptyValue(CharSequence emptyValue):设置空值时的输出内容。
  • public String toString():返回拼接后的字符串。

StringJoiner示例

StringJoiner joiner = new StringJoiner("-", "[", "]");
joiner.add("Java").add("Python").add("Go");
System.out.println(joiner); // [Java-Python-Go]

六、性能与适用场景对比

类名 可变性 线程安全 引入版本 性能 典型场景
String 不可变 安全 JDK 1.0 不频繁拼接
StringBuilder 可变 JDK 1.5 单线程高频拼接
StringBuffer 可变 JDK 1.0 多线程字符串操作
StringJoiner 可变 JDK 1.8 格式化分隔拼接

七、总结

  • String:不可变,适合少量字符串操作。
  • StringBuilder:非线程安全但性能优异。
  • StringBuffer:线程安全,适合多线程场景。
  • StringJoiner:JDK 1.8+ 推荐用于带分隔符的格式化拼接。

合理选择字符串类,可以显著提升 Java 程序的性能与可维护性。