掌握 Java String 类中最常用的 19 个内置方法
理解每个方法的功能、参数、返回值及典型应用场景
能够在实际开发中灵活组合使用这些方法处理文本数据
区分 equals() 与 ==、compareTo() 与 equals() 等易混淆概念
int length()作用:返回字符串中字符的个数(包括空格和标点)。
String s = "Hello, World!";
System.out.println(s.length()); // 输出:13💡 注意:中文字符也按一个字符计算(UTF-16 编码下,大部分常用汉字占一个
char)。
char charAt(int index)作用:返回指定索引位置的字符(索引从 0 开始)。
String s = "Hello";
System.out.println(s.charAt(1)); // 输出:e⚠️ 若索引越界(<0 或 ≥ length()),抛出
StringIndexOutOfBoundsException。
String substring(int beginIndex)作用:从 beginIndex 开始截取到字符串末尾。
String s = "Hello, World!";
System.out.println(s.substring(7)); // 输出:World!String substring(int beginIndex, int endIndex)作用:截取 [beginIndex, endIndex) 区间的子串(包含起始,不包含结束)。
String s = "Hello, World!";
System.out.println(s.substring(7, 12)); // 输出:World✅ 记忆技巧:
substring(a, b)相当于“从 a 到 b 前一个”。
String concat(String str)作用:将指定字符串拼接到当前字符串末尾,返回新字符串。
String s = "Hello";
System.out.println(s.concat(" World!")); // 输出:Hello World!🔔 注意:若
str为null,会抛出NullPointerException。
int indexOf(String str)作用:返回子串首次出现的索引,未找到返回 -1。
String s = "Hello, World!";
System.out.println(s.indexOf("World")); // 输出:7int indexOf(String str, int fromIndex)作用:从指定位置开始查找子串首次出现的索引。
String s = "Hello, World!";
System.out.println(s.indexOf("l", 4)); // 从索引4开始找'l' → 输出:10int lastIndexOf(String str)作用:返回子串最后一次出现的索引。
String s = "Hello, World!";
System.out.println(s.lastIndexOf("l")); // 输出:10(最后一个 'l')boolean equals(Object obj)作用:严格比较两个字符串的内容是否完全相同(区分大小写)。
String s = "Hello";
System.out.println(s.equals("Hello")); // true
System.out.println(s.equals("hello")); // false
System.out.println(s.equals(null)); // false(不会报错)✅ 永远用
.equals()比较字符串内容,不要用==(==比较引用地址)。
boolean equalsIgnoreCase(String str)作用:忽略大小写比较字符串内容。
String s = "Hello";
System.out.println(s.equalsIgnoreCase("HELLO")); // trueint compareTo(String anotherString)作用:按字典顺序(lexicographical order)比较两个字符串,返回整数:
< 0:当前字符串小于参数
= 0:相等
> 0:当前字符串大于参数
System.out.println("apple".compareTo("banana")); // 负数(a < b)
System.out.println("Hello".compareTo("Hello")); // 0📌 应用场景:排序(如
Collections.sort()默认使用此方法)。
int compareToIgnoreCase(String str)作用:忽略大小写的字典序比较。
System.out.println("Apple".compareToIgnoreCase("apple")); // 0String toLowerCase()作用:将所有字符转为小写。
String s = "Hello, World!";
System.out.println(s.toLowerCase()); // hello, world!String toUpperCase()作用:将所有字符转为大写。
String s = "Hello, World!";
System.out.println(s.toUpperCase()); // HELLO, WORLD!💡 这两个方法遵循当前系统的区域设置(Locale),如需指定区域,可用
toLowerCase(Locale)。
String trim()作用:去除字符串首尾的空白字符(如空格、制表符 \t、换行符 \n),中间空白保留。
String s = " Hello Trim! ";
System.out.println("'" + s.trim() + "'"); // 'Hello Trim!'⚠️ 注意:
trim()不处理 Unicode 空白字符(如不间断空格\u00A0),Java 11+ 可用strip()替代。
String replace(char oldChar, char newChar)作用:将所有 oldChar 替换为 newChar。
String s = "Hello";
System.out.println(s.replace('l', 'x')); // Hexxo🔁 Java 8+ 还支持
replace(CharSequence target, CharSequence replacement),可替换子串。
boolean contains(CharSequence sequence)作用:判断字符串是否包含指定子序列。
String s = "Hello, World!";
System.out.println(s.contains("World")); // true✅ 内部调用
indexOf(),若返回值 ≥ 0 则为true。
char[] toCharArray()作用:将字符串转换为字符数组。
String s = "Hello";
char[] arr = s.toCharArray();
for (char c : arr) {
System.out.print(c + " "); // H e l l o
}🛠️ 常用于需要逐字符处理或修改(配合
StringBuilder)的场景。
boolean startsWith(String prefix)作用:判断字符串是否以指定前缀开头。
String s = "https://example.com";
System.out.println(s.startsWith("https")); // true🔍 还有
startsWith(String prefix, int toffset)可从指定位置开始检查。
✅ 黄金法则:
所有方法均不修改原字符串(因
String不可变)比较内容用
.equals(),排序用.compareTo()动态构建字符串优先考虑
StringBuilder
s1.equals(s2) 和 s1.compareTo(s2) == 0 在功能上是否等价?在什么情况下结果可能不同?
为什么 trim() 不能去除字符串中间的空格?如果需要删除所有空格,应如何实现?
给定一个邮箱字符串 " User@Example.COM ",请使用所学方法将其标准化为 "user@example.com"(去空格、转小写)。