1. String
类
String
是不可变的(immutable),即一旦创建,其内容就不能被修改。每次对 String
的操作(如拼接、替换等)都会生成一个新的 String
对象。
常用方法
构造方法
-
String()
:创建一个空字符串。 -
String(String original)
:根据给定的字符串创建一个新字符串。 -
String(char[] value)
:根据字符数组创建字符串。 -
String(byte[] bytes)
:根据字节数组创建字符串。
常用方法
-
长度相关
-
int length()
:返回字符串的长度。
-
-
查找和比较
-
boolean equals(Object obj)
:比较字符串内容是否相等。 -
boolean equalsIgnoreCase(String anotherString)
:忽略大小写比较字符串内容。 -
int compareTo(String anotherString)
:按字典顺序比较字符串。 -
boolean contains(CharSequence s)
:判断字符串是否包含指定字符序列。 -
int indexOf(String str)
:返回指定子字符串第一次出现的索引。 -
int lastIndexOf(String str)
:返回指定子字符串最后一次出现的索引。
-
-
截取和分割
-
String substring(int beginIndex)
:从指定索引开始截取子字符串。 -
String substring(int beginIndex, int endIndex)
:截取指定范围的子字符串。 -
String[] split(String regex)
:根据正则表达式分割字符串。
-
-
替换和转换
-
String replace(char oldChar, char newChar)
:替换字符。 -
String replaceAll(String regex, String replacement)
:根据正则表达式替换字符串。 -
String toLowerCase()
:将字符串转换为小写。 -
String toUpperCase()
:将字符串转换为大写。 -
String trim()
:去除字符串两端的空白字符。
-
-
其他
-
char charAt(int index)
:返回指定索引处的字符。 -
boolean isEmpty()
:判断字符串是否为空。 -
String concat(String str)
:将指定字符串连接到当前字符串末尾。
-
2. StringBuffer
类
StringBuffer
是可变的(mutable),适合频繁修改字符串内容的场景。它是线程安全的(synchronized),适合多线程环境。
StringBuffer
类本身没有 contains
方法 。StringBuffer
主要用于可变字符串的操作,比如追加、插入、删除字符等
常用方法
构造方法
-
StringBuffer()
:创建一个空的StringBuffer
,初始容量为 16。 -
StringBuffer(int capacity)
:创建一个指定容量的StringBuffer
。 -
StringBuffer(String str)
:根据指定字符串创建StringBuffer
。
常用方法
-
长度和容量
-
int length()
:返回当前字符串的长度。 -
int capacity()
:返回当前容量(可存储的字符数)。 -
void ensureCapacity(int minimumCapacity)
:确保容量至少为指定值。
-
-
追加和插入
-
StringBuffer append(String str)
:在末尾追加字符串。 -
StringBuffer append(int i)
:在末尾追加整数。 -
StringBuffer insert(int offset, String str)
:在指定位置插入字符串。
-
-
删除和替换
-
StringBuffer delete(int start, int end)
:删除指定范围的字符。 -
StringBuffer deleteCharAt(int index)
:删除指定索引处的字符。 -
StringBuffer replace(int start, int end, String str)
:替换指定范围的字符。
-
-
反转
-
StringBuffer reverse()
:反转字符串。
-
-
其他
-
void setLength(int newLength)
:设置字符串的长度。 -
void setCharAt(int index, char ch)
:设置指定索引处的字符。 -
char charAt(int index)
:返回指定索引处的字符。 -
String substring(int start)
:从指定位置截取子字符串。 -
String substring(int start, int end)
:截取指定范围的子字符串。
-
3. String
和 StringBuffer
的区别
特性 | String | StringBuffer |
---|---|---|
可变性 | 不可变 | 可变 |
线程安全 | 线程安全(因为不可变) | 线程安全(方法使用 synchronized ) |
性能 | 适合少量操作 | 适合频繁修改 |
内存开销 | 每次修改都会创建新对象 | 修改时不会创建新对象 |
常用场景 | 字符串常量、少量操作 | 频繁修改字符串、多线程环境 |
4. 示例代码
String
示例
java
复制
String str = "Hello"; str = str.concat(" World"); // 创建新对象 System.out.println(str); // 输出: Hello World
StringBuffer
示例
java
复制
StringBuffer sb = new StringBuffer("Hello"); sb.append(" World"); // 直接修改原对象 System.out.println(sb); // 输出: Hello World
5. 总结
-
如果需要频繁修改字符串内容,使用
StringBuffer
或StringBuilder
(非线程安全,性能更高)。 -
如果字符串内容不需要修改,使用
String
。 -
根据具体场景选择合适的类,可以提升性能和代码可读性。