在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()),更多實用方法會不斷加入,持續學習和實踐將幫助你更高效地處理字符串。