在Java中,字符串是处理文本信息的基础,而String类是Java中最常用的类之一,用于表示和操作文本数据。字符串本质上是字符的序列,而String类提供了丰富的方法来帮助我们完成各种文本操作,比如获取长度、拼接、比较、分割等。
一、String类的基本特性¶
首先要了解String的一个重要特性:不可变性。这意味着一旦创建了一个String对象,它的内容就无法被修改。如果需要修改字符串,实际上是创建了一个新的String对象。
例如:
String original = "Hello";
original = original + " World"; // 这里创建了新的字符串对象
二、常用方法及示例¶
接下来,我们将介绍String类中最常用的方法,每个方法都配有代码示例和说明。
1. 获取字符串长度:length()¶
length()方法用于返回字符串的长度(即字符的个数)。
示例:
String str = "Java Programming";
int len = str.length();
System.out.println("字符串长度:" + len); // 输出:18
2. 获取指定位置的字符:charAt(int index)¶
charAt(index)方法返回字符串中指定索引位置的字符(索引从0开始)。
示例:
String str = "Hello";
char firstChar = str.charAt(0); // 获取第0个字符(第一个字符)
char lastChar = str.charAt(str.length() - 1); // 获取最后一个字符
System.out.println("第一个字符:" + firstChar); // 输出:H
System.out.println("最后一个字符:" + lastChar); // 输出:o
3. 字符串拼接:concat(String str) 或 + 运算符¶
concat()方法用于将当前字符串与另一个字符串拼接。此外,Java也支持用+运算符进行字符串拼接。
示例:
String a = "Hello";
String b = "World";
// 使用concat()
String c = a.concat(b);
System.out.println(c); // 输出:HelloWorld
// 使用+运算符
String d = a + " " + b;
System.out.println(d); // 输出:Hello World
4. 比较字符串内容:equals(String str)¶
equals()方法用于比较两个字符串的内容是否相等。注意:不要使用==运算符比较字符串内容,因为==比较的是对象的内存地址(除非字符串是常量且位于常量池)。
示例:
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc"); // 新创建的对象,与s1地址不同
System.out.println(s1 == s2); // true(常量池复用,可能相同)
System.out.println(s1 == s3); // false(s3是新对象,地址不同)
System.out.println(s1.equals(s2)); // true(内容相同)
System.out.println(s1.equals(s3)); // true(内容相同)
重要结论:比较字符串内容必须用equals(),而非==。
5. 截取子串:substring(int beginIndex) 或 substring(int beginIndex, int endIndex)¶
substring(beginIndex):从beginIndex索引开始截取到字符串末尾。substring(beginIndex, endIndex):截取从beginIndex到endIndex-1的子串(左闭右开)。
示例:
String s = "HelloWorld";
// 从索引2开始截取到末尾
String part1 = s.substring(2);
System.out.println(part1); // 输出:lloWorld
// 截取索引2到5(不包含5)
String part2 = s.substring(2, 5);
System.out.println(part2); // 输出:llo
6. 替换字符/子串:replace(char oldChar, char newChar) 或 replace(CharSequence target, CharSequence replacement)¶
replace()可以替换单个字符或整个子串:
- 替换单个字符:replace(oldChar, newChar)
- 替换子串:replace(target, replacement)
示例:
String s = "Hello Java";
// 替换单个字符 'H' 为 'h'
String newS1 = s.replace('H', 'h');
System.out.println(newS1); // 输出:hllo Java
// 替换子串 "Java" 为 "Python"
String newS2 = s.replace("Java", "Python");
System.out.println(newS2); // 输出:Hello Python
7. 去除首尾空格:trim()¶
trim()方法移除字符串首尾的空白字符(空格、制表符、换行符等)。
示例:
String s = " Java String ";
String trimmed = s.trim();
System.out.println(trimmed); // 输出:Java String
8. 分割字符串:split(String regex)¶
split()方法根据指定的分隔符(正则表达式)将字符串分割成多个子串,并返回字符串数组。
示例:
String csv = "apple,banana,orange,grape";
String[] fruits = csv.split(","); // 按逗号分割
for (String fruit : fruits) {
System.out.println(fruit); // 依次输出每个水果
}
// 输出:
// apple
// banana
// orange
// grape
9. 转换大小写:toLowerCase() 和 toUpperCase()¶
toLowerCase():将字符串所有字符转为小写。toUpperCase():将字符串所有字符转为大写。
示例:
String s = "Hello World";
String lower = s.toLowerCase();
String upper = s.toUpperCase();
System.out.println(lower); // 输出:hello world
System.out.println(upper); // 输出:HELLO WORLD
10. 判断空/空白字符串:isEmpty() 和 isBlank()¶
isEmpty():判断字符串长度是否为0(仅长度为0返回true)。isBlank()(Java 11+):判断字符串是否为空白(长度为0或仅包含空白字符,如空格、制表符等)。
示例:
String emptyStr = "";
String blankStr = " ";
String normalStr = "Java";
System.out.println(emptyStr.isEmpty()); // true
System.out.println(emptyStr.isBlank()); // true
System.out.println(blankStr.isEmpty()); // false(长度为3)
System.out.println(blankStr.isBlank()); // true(包含空白字符)
System.out.println(normalStr.isEmpty()); // false
System.out.println(normalStr.isBlank()); // false
三、注意事项¶
- 不可变性:修改字符串时会创建新对象,频繁修改可能导致性能问题(如循环中拼接字符串)。此时更推荐使用
StringBuilder或StringBuffer(线程安全)。 - 避免使用
==比较内容:除非确定是同一个对象,否则始终用equals()比较字符串内容。 - 特殊字符处理:使用
split()等方法时,如果分隔符是正则表达式中的特殊字符(如.、*等),需要转义(如split("\\.")处理以.分割)。
四、总结¶
掌握String类的常用方法是Java文本操作的基础。通过本文介绍的length()、charAt()、equals()、substring()等方法,你可以轻松完成大部分文本处理需求,例如获取信息、拼接内容、格式转换、分割数据等。随着Java版本更新(如isBlank()),更多实用方法会不断加入,持续学习和实践将帮助你更高效地处理字符串。