在Java中,String
類是一個非常重要的類,用于表示和操作字符串。字符串是字符序列,String
類提供了豐富的方法來操作這些字符序列。由于字符串在Java中是不可變的,因此每次對字符串的操作都會生成一個新的字符串對象。
String
類提供了多種構造方法,用于創建字符串對象。以下是一些常用的構造方法:
無參構造方法:
String str = new String();
創建一個空的字符串對象。
使用字符數組構造方法:
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str = new String(charArray);
使用字符數組創建一個字符串對象。
使用字節數組構造方法:
byte[] byteArray = {72, 101, 108, 108, 111};
String str = new String(byteArray);
使用字節數組創建一個字符串對象。
使用字符串字面量構造方法:
String str = new String("Hello");
使用字符串字面量創建一個字符串對象。
使用StringBuffer或StringBuilder構造方法:
StringBuffer sb = new StringBuffer("Hello");
String str = new String(sb);
使用StringBuffer
或StringBuilder
對象創建一個字符串對象。
length()
:
String str = "Hello";
int length = str.length(); // 返回5
返回字符串的長度。equals(Object obj)
:
String str1 = "Hello";
String str2 = "Hello";
boolean isEqual = str1.equals(str2); // 返回true
比較兩個字符串的內容是否相等。
equalsIgnoreCase(String str)
:
String str1 = "Hello";
String str2 = "hello";
boolean isEqual = str1.equalsIgnoreCase(str2); // 返回true
忽略大小寫比較兩個字符串的內容是否相等。
compareTo(String str)
:
String str1 = "Hello";
String str2 = "World";
int result = str1.compareTo(str2); // 返回負數,表示str1小于str2
按字典順序比較兩個字符串。
compareToIgnoreCase(String str)
:
String str1 = "Hello";
String str2 = "hello";
int result = str1.compareToIgnoreCase(str2); // 返回0,表示相等
忽略大小寫按字典順序比較兩個字符串。
charAt(int index)
:
String str = "Hello";
char ch = str.charAt(1); // 返回'e'
返回指定索引處的字符。
indexOf(int ch)
:
String str = "Hello";
int index = str.indexOf('e'); // 返回1
返回指定字符在字符串中第一次出現的索引。
indexOf(String str)
:
String str = "Hello World";
int index = str.indexOf("World"); // 返回6
返回指定子字符串在字符串中第一次出現的索引。
lastIndexOf(int ch)
:
String str = "Hello";
int index = str.lastIndexOf('l'); // 返回3
返回指定字符在字符串中最后一次出現的索引。
lastIndexOf(String str)
:
String str = "Hello World";
int index = str.lastIndexOf("o"); // 返回7
返回指定子字符串在字符串中最后一次出現的索引。
substring(int beginIndex)
:
String str = "Hello World";
String subStr = str.substring(6); // 返回"World"
返回從指定索引開始到字符串末尾的子字符串。
substring(int beginIndex, int endIndex)
:
String str = "Hello World";
String subStr = str.substring(0, 5); // 返回"Hello"
返回從指定開始索引到結束索引之間的子字符串。
replace(char oldChar, char newChar)
:
String str = "Hello";
String newStr = str.replace('l', 'L'); // 返回"HeLLo"
替換字符串中所有指定的字符。
replace(CharSequence target, CharSequence replacement)
:
String str = "Hello World";
String newStr = str.replace("World", "Java"); // 返回"Hello Java"
替換字符串中所有指定的子字符串。
split(String regex)
:
String str = "Hello,World,Java";
String[] parts = str.split(","); // 返回["Hello", "World", "Java"]
根據指定的正則表達式分割字符串。
split(String regex, int limit)
:
String str = "Hello,World,Java";
String[] parts = str.split(",", 2); // 返回["Hello", "World,Java"]
根據指定的正則表達式和限制次數分割字符串。
concat(String str)
:
String str1 = "Hello";
String str2 = "World";
String newStr = str1.concat(str2); // 返回"HelloWorld"
將指定字符串連接到當前字符串的末尾。
+
運算符:
String str1 = "Hello";
String str2 = "World";
String newStr = str1 + str2; // 返回"HelloWorld"
使用+
運算符連接字符串。
toLowerCase()
:
String str = "Hello";
String lowerStr = str.toLowerCase(); // 返回"hello"
將字符串轉換為小寫。
toUpperCase()
:
String str = "Hello";
String upperStr = str.toUpperCase(); // 返回"HELLO"
將字符串轉換為大寫。
trim()
:
String str = " Hello ";
String trimmedStr = str.trim(); // 返回"Hello"
去除字符串兩端的空格。format(String format, Object... args)
:
String str = String.format("Hello, %s!", "World"); // 返回"Hello, World!"
使用指定的格式字符串和參數格式化字符串。toCharArray()
:
String str = "Hello";
char[] charArray = str.toCharArray(); // 返回['H', 'e', 'l', 'l', 'o']
將字符串轉換為字符數組。
getBytes()
:
String str = "Hello";
byte[] byteArray = str.getBytes(); // 返回[72, 101, 108, 108, 111]
將字符串轉換為字節數組。
valueOf(Object obj)
:
int num = 123;
String str = String.valueOf(num); // 返回"123"
將其他類型的對象轉換為字符串。
isEmpty()
:
String str = "";
boolean isEmpty = str.isEmpty(); // 返回true
判斷字符串是否為空。
contains(CharSequence s)
:
String str = "Hello World";
boolean contains = str.contains("World"); // 返回true
判斷字符串是否包含指定的子字符串。
startsWith(String prefix)
:
String str = "Hello World";
boolean startsWith = str.startsWith("Hello"); // 返回true
判斷字符串是否以指定的前綴開頭。
endsWith(String suffix)
:
String str = "Hello World";
boolean endsWith = str.endsWith("World"); // 返回true
判斷字符串是否以指定的后綴結尾。
matches(String regex)
:
String str = "Hello";
boolean matches = str.matches("H.*"); // 返回true
判斷字符串是否匹配指定的正則表達式。
在Java中,String
類是不可變的,這意味著一旦創建了一個字符串對象,它的內容就不能被改變。每次對字符串的操作(如連接、替換等)都會生成一個新的字符串對象,而原始的字符串對象保持不變。
例如:
String str = "Hello";
str = str + " World"; // 創建一個新的字符串對象
由于字符串的不可變性,頻繁的字符串操作可能會導致大量的臨時對象產生,從而影響性能。在這種情況下,可以使用StringBuffer
或StringBuilder
類來進行字符串操作。
StringBuffer
和StringBuilder
類是可變的字符串類,它們提供了與String
類相似的方法,但允許對字符串進行修改而不生成新的對象。
StringBuffer
:
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World"); // 修改原字符串
String str = sb.toString(); // 返回"Hello World"
StringBuffer
是線程安全的,適合在多線程環境下使用。
StringBuilder
:
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // 修改原字符串
String str = sb.toString(); // 返回"Hello World"
StringBuilder
不是線程安全的,但在單線程環境下性能更好。
String
類是Java中用于表示和操作字符串的核心類。它提供了豐富的方法來操作字符串,但由于其不可變性,頻繁的字符串操作可能會導致性能問題。在這種情況下,可以使用StringBuffer
或StringBuilder
類來進行字符串操作。理解String
類及其相關類的使用方法,對于編寫高效的Java程序至關重要。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。