String 类的常用方法都有那些?
参考回答
String
类在 Java 中是最常用的类之一,它提供了许多常用的方法来处理字符串操作。以下是一些 常用方法:
- 字符串获取相关
length()
:获取字符串的长度。charAt(int index)
:获取指定位置的字符。substring(int beginIndex)
:从指定位置开始截取字符串。substring(int beginIndex, int endIndex)
:截取指定范围的字符串。
- 字符串比较相关
equals(Object obj)
:比较两个字符串内容是否相同。equalsIgnoreCase(String anotherString)
:忽略大小写比较字符串是否相同。compareTo(String anotherString)
:按字典顺序比较两个字符串。compareToIgnoreCase(String anotherString)
:忽略大小写按字典顺序比较。
- 字符串查找相关
indexOf(String str)
:返回子字符串第一次出现的索引。indexOf(String str, int fromIndex)
:从指定位置开始查找子字符串的索引。lastIndexOf(String str)
:返回子字符串最后一次出现的索引。contains(CharSequence s)
:判断是否包含某个子字符串。startsWith(String prefix)
:判断字符串是否以指定前缀开头。endsWith(String suffix)
:判断字符串是否以指定后缀结尾。
- 字符串修改相关
concat(String str)
:拼接字符串。replace(char oldChar, char newChar)
:替换字符。replace(CharSequence target, CharSequence replacement)
:替换字符串。replaceAll(String regex, String replacement)
:用正则替换所有匹配的字符串。replaceFirst(String regex, String replacement)
:用正则替换第一个匹配的字符串。toUpperCase()
:将字符串转为大写。toLowerCase()
:将字符串转为小写。trim()
:去除字符串两端的空格。
- 字符串分割和拆分
split(String regex)
:根据正则表达式分割字符串。split(String regex, int limit)
:根据正则表达式分割字符串,限制分割数量。
- 字符串判空相关
isEmpty()
:判断字符串是否为空(length() == 0
)。isBlank()
(Java 11+):判断字符串是否为空白(包括空格、制表符等)。
- 转换相关
valueOf(Object obj)
:将其他类型转换为字符串。toCharArray()
:将字符串转为字符数组。getBytes()
:将字符串转为字节数组。
详细讲解与拓展
1. 字符串获取相关
length()
:获取字符串的长度。charAt(int index)
:返回指定索引处的字符,索引从 0 开始。substring(int beginIndex, int endIndex)
:截取指定范围的字符串,注意:索引是左闭右开。
示例代码:
public class Main {
public static void main(String[] args) {
String str = "hello world";
System.out.println("Length: " + str.length()); // 输出:11
System.out.println("Char at index 1: " + str.charAt(1)); // 输出:e
System.out.println("Substring: " + str.substring(0, 5)); // 输出:hello
}
}
2. 字符串比较相关
equals(Object obj)
:比较字符串内容是否相同。-
equalsIgnoreCase(String anotherString)
:忽略大小写比较字符串。 -
compareTo(String anotherString)
:按字典顺序比较字符串,返回值:
- 0:相等。
- 正数:当前字符串大于参数字符串。
- 负数:当前字符串小于参数字符串。
示例代码:
public class Main {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "Hello";
System.out.println("Equals: " + str1.equals(str2)); // false
System.out.println("Equals Ignore Case: " + str1.equalsIgnoreCase(str2)); // true
System.out.println("Compare To: " + str1.compareTo(str2)); // 32 (h > H)
}
}
3. 字符串查找相关
indexOf()
和lastIndexOf()
:查找子字符串的位置。contains()
:判断字符串是否包含某个子字符串。startsWith()
和endsWith()
:检查字符串的前缀和后缀。
示例代码:
public class Main {
public static void main(String[] args) {
String str = "hello world";
System.out.println("Index Of: " + str.indexOf("world")); // 输出:6
System.out.println("Contains: " + str.contains("hello")); // 输出:true
System.out.println("Starts With: " + str.startsWith("hello")); // 输出:true
System.out.println("Ends With: " + str.endsWith("world")); // 输出:true
}
}
4. 字符串修改相关
concat()
:拼接字符串。replace()
:替换字符或字符串。toUpperCase()
和toLowerCase()
:字符串大小写转换。trim()
:去除字符串首尾的空格。
示例代码:
public class Main {
public static void main(String[] args) {
String str = " hello world ";
System.out.println("Concat: " + str.concat("!!!")); // 输出: hello world !!!
System.out.println("Replace: " + str.replace("world", "Java")); // 输出: hello Java
System.out.println("To Upper Case: " + str.toUpperCase()); // 输出: HELLO WORLD
System.out.println("Trim: " + str.trim()); // 输出:hello world
}
}
5. 字符串分割和拆分
split()
:按照正则表达式拆分字符串。toCharArray()
:将字符串转为字符数组。
示例代码:
public class Main {
public static void main(String[] args) {
String str = "apple,banana,orange";
String[] fruits = str.split(",");
for (String fruit : fruits) {
System.out.println(fruit);
}
char[] chars = str.toCharArray();
for (char c : chars) {
System.out.print(c + " "); // 输出:a p p l e , b a n a n a , o r a n g e
}
}
}
6. 字符串判空相关
isEmpty()
:判断字符串是否为空。isBlank()
(Java 11+):判断字符串是否为空白字符串。
示例代码:
public class Main {
public static void main(String[] args) {
String str1 = "";
String str2 = " ";
System.out.println("Is Empty: " + str1.isEmpty()); // 输出:true
System.out.println("Is Blank: " + str2.isBlank()); // 输出:true (Java 11+)
}
}
拓展知识
- 字符串不可变性
- 字符串一旦创建,内容不可变。对
String
的修改操作都会生成新的对象。 - 适合存储常量、线程安全。
- 字符串一旦创建,内容不可变。对
- 正则表达式与字符串操作
replaceAll()
和split()
等方法支持正则表达式,用于高效的字符串处理。
- 优化性能:
StringBuilder
- 如果需要频繁修改字符串,建议使用
StringBuilder
或StringBuffer
代替String
,以避免创建过多临时对象。
- 如果需要频繁修改字符串,建议使用