一、字元串定義與創建
字元串是Java中最重要的類之一,簡單來說就是一組字元的序列。字元串的定義可以使用char數組和String類型兩種方式,而String類型又可以使用直接量或構造函數。
1. char數組方式
char[] charArray = {'J', 'a', 'v', 'a'}; String str1 = new String(charArray); // 定義字元串
一般來說,使用char數組方式定義字元串較少使用。
2. 直接量方式
String str2 = "Java"; // 直接定義
使用直接量方式可以方便快捷地定義字元串,它是使用雙引號包含一個或多個字元常量,引號中的字元就是字元串的值。
3. 構造函數方式
String str3 = new String("Java"); // 通過構造函數定義
使用構造函數方式定義字元串可以靈活地操作字元串對象。構造函數分為以下兩類:
- public String():默認構造函數,創建一個空字元串對象。
- public String(String original):使用原字元串創建一個新的字元串對象。
二、字元串常見方法
1. 字元串比較
在Java中,字元串比較是很常見的操作。一般來說,比較字元串可以使用「==」或equals()方法,但是兩者有所不同。
1) 字元串比較==
String str1 = "Java"; String str2 = "Java"; System.out.println(str1 == str2); // 輸出true
字元串比較時,如果使用「==」操作符,比較的是兩個字元串的引用是否相同。
2) 字元串比較equals()
String str1 = "Java"; String str2 = "Java"; System.out.println(str1.equals(str2)); // 輸出true
字元串比較時,使用equals()方法比較的是兩個字元串的內容是否相同。
2. 字元串查找
在字元串中查找某個字元或字元串,可以使用indexOf()、lastIndexOf()、startsWith()、endsWith()等方法。
1) indexOf()和lastIndexOf()
String str = "Java test case"; int index1 = str.indexOf("t"); // 查找字元串中第一個出現「t」的位置 int index2 = str.lastIndexOf("t"); // 查找字元串中最後一個出現「t」的位置
這兩種方法可以查找指定字元或字元串在字元串中第一次或最後一次出現的位置,如果沒找到則返回-1。
2) startsWith()和endsWith()
String str = "Java test case"; boolean startsWith = str.startsWith("Java"); // 是否以「Java」開頭 boolean endsWith = str.endsWith("case"); // 是否以「case」結尾
這兩種方法可以判斷字元串是否以指定的前綴或後綴開頭或結束。
3. 字元串分割
字元串分割是常見的字元串操作之一,可以使用split()方法進行分割。
String str = "Java is a programming language."; String[] arr = str.split(" "); // 以空格為分隔符進行分割 for(String s : arr) { System.out.println(s); }
上面的代碼將字元串按照空格進行分割,得到一個字元串數組。可以通過循環輸出數組中的每一項。
4. 字元串替換
字元串替換是常見的字元串操作之一,可以使用replace()方法進行替換。
String str = "Java is a programming language."; String newStr = str.replace("Java", "Python"); // 將「Java」替換為「Python」 System.out.println(newStr);
上面的代碼將字元串中的「Java」替換為「Python」,輸出結果為「Python is a programming language.」。
三、字元串常量池
在Java中,字元串常量池是一塊特殊的內存區域,用於存儲字元串對象。字元串常量池有以下特點:
- 同一個字元串常量池中不會有兩個相同的字元串對象。
- 使用直接量進行字元串賦值時,虛擬機會先在字元串常量池中查找是否已存在該字元串對象,如果不存在則在字元串常量池中新增一個字元串對象。
- 使用new關鍵字進行字元串賦值時,虛擬機會先在字元串常量池中查找是否已存在該字元串對象,如果不存在則在堆內存中創建一個新的字元串對象。
四、字元串性能
由於字元串常用於連接、查找、分割、替換等操作,因此字元串的性能往往是我們需要關注的重點。Java提供了StringBuilder和StringBuffer兩種類來優化字元串的性能問題。
1. StringBuilder
StringBuilder用於字元串拼接操作。在進行字元串拼接操作時,建議使用StringBuilder而不是使用「+」或StringBuffer。StringBuilder是非線程安全的,因此適用於單線程的情況。
StringBuilder sb = new StringBuilder(); for(int i = 0; i < 100; i++) { sb.append(i); } String str = sb.toString();
上面的代碼使用StringBuilder拼接了一個長度為100的數字字元串,並將StringBuilder轉化為String。
2. StringBuffer
StringBuffer也是用於字元串拼接操作的類。StringBuffer是線程安全的,因此適用於多線程的情況,但是由於線程同步的緣故,其性能稍差於StringBuilder。
StringBuffer sb = new StringBuffer(); for(int i = 0; i < 100; i++) { sb.append(i); } String str = sb.toString();
上面的代碼使用StringBuffer拼接了一個長度為100的數字字元串,並將StringBuffer轉化為String。
總結
本文對Java字元串的定義與創建、字元串常見方法、字元串常量池、字元串性能等方面進行了介紹,對於初學者來說,掌握好這些內容能夠幫助使用Java中字元串的編程更加得心應手。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247109.html