Java 字串
字串在字面意義上就是一系列字元。字串不是 Java 中的原始資料型別。是的,所以在技術方面,Java 字串基本上是一個字元陣列。
為什麼要使用字串?
現代電腦科學的主要功能之一是處理人類語言。與數字對數學的重要性類似,語言符號對於意義和決策也很重要。
作為 Java 程式設計師,你儲存和處理語言的主要工具之一將是 String 類。
String 語法示例
現在,讓我們來看一些字串語法。
String 是一個字元陣列,表示為:
//String is an array of characters
char[] arrSample = {'R', 'O', 'S', 'E'};
String strSample_1 = new String (arrSample);
在技術方面,字串在上面的例子中定義如下 -
= new (argument);
現在我們不能總是把我們的字串寫成陣列,因此我們可以在 Java 中定義 String,如下所示:
//Representation of String
String strSample_2 = "ROSE";
在技術方面,以上表示為:
= ;
Java 用 String Class
擴充套件了物件類。
字串連線
我們有兩個字串 str1 =Rock
和 str2 =Star
,如果我們將這兩個字串相加,我們應該得到 str3 =RockStar
的結果。
看一下下面的程式碼片段,它解釋了執行字串連線的兩種方法。
首先使用 String 類的 concat
方法,然後使用算術 +
運算子。兩者都產生相同的輸出
public class Sample_String{
public static void main(String[] args){
//String Concatenation
String str1 = "Rock";
String str2 = "Star";
//Method 1 : Using concat
String str3 = str1.concat(str2);
System.out.println(str3);
//Method 2 : Using "+" operator
String str4 = str1 + str2;
System.out.println(str4);
}
}
重要的 Java 字串方法:
字串 length
方法
你如何確定給定 String 的長度?Java 提供了一種稱為 length
的方法。將它用於你需要查詢長度的 String。
public class Sample_String{
public static void main(String[] args){
//Our sample string for this tutorial
String str_Sample = "RockStar";
//Length of a String
System.out.println("Length of String: " + str_Sample.length());
}
}
輸出
Length of String: 8
字串 indexOf
方法
如果我知道長度,我怎麼能找到哪個字元在哪個位置?簡而言之,我如何找到字元的索引?
字串中有一個 indexOf
方法可以幫助你確定你指定的特定字元的位置。
public class Sample_String{
public static void main(String[] args){
//Character at position
String str_Sample = "RockStar";
System.out.println("Character at position 5: " + str_Sample.charAt(5));
//Index of a given character
System.out.println("Index of character 'S': " + str_Sample.indexOf('S'));
}
}
輸出:
Character at position 5: t
Index of character 'S': 4
字串 charAt
方法
與上述問題類似,給定索引,我如何知道該位置的字元?
簡單,來使用 charAt
方法並提供你需要查詢其字元的索引。
public class Sample_String{
public static void main(String[] args){
//Character at position
String str_Sample = "RockStar";
System.out.println("Character at position 5: " + str_Sample.charAt(5));
}
}
輸出:
Character at position 5: t
字串 CompareTo
方法
我想檢查由某種方法生成的字串是否等於我要驗證的字串?我如何比較兩個字串?
使用方法 compareTo
並指定要比較的字串。如果你不希望結果區分大小寫,請使用 compareToIgnoreCase
。
如果參考字串等於此字串,則結果為 0
;如果此字串按字典順序小於參考字串,則小於 0
,如果此字串按字典順序大於參考字串,則值大於 0
。
public class Sample_String{
public static void main(String[] args){
//Compare to a String
String str_Sample = "RockStar";
System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
//Compare to - Ignore case
System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));
}
}
輸出:
Compare To 'ROCKSTAR': -32
Compare To 'ROCKSTAR' - Case Ignored: 0
字串 contains
方法
我知道字串應該部分包含什麼,如何確認字串是否包含我指定的字元序列?
使用方法 contains
並指定你需要檢查的字元。當且僅當此字串包含指定的 char 值序列時,才返回 true
。
public class Sample_String{
public static void main(String[] args){
//Check if String contains a sequence
String str_Sample = "RockStar";
System.out.println("Contains sequence 'tar': " + str_Sample.contains("tar"));
}
}
輸出:
Contains sequence 'tar': true
字串 endsWith
方法
如何確認 String 是否以特定字尾結尾? 來使用 endsWith
方法並在引數中指定字尾。
如果參數列示的字元序列是此物件表示的字元序列的字尾,則返回 true
。
public class Sample_String{
public static void main(String[] args){
//Check if ends with a particular sequence
String str_Sample = "RockStar";
System.out.println("EndsWith character 'r': " + str_Sample.endsWith("r"));
}
}
輸出:
EndsWith character 'r': true
字串 replaceAll
和 replaceFirst
方法
我想在幾個地方修改我的 String 並在幾個地方替換 String,如何來做呢?
用 Java 字串替換的 replaceAll
和 replaceFirst
方法。你可以指定要替換的字串部分以及引數中的替換字串。
public class Sample_String{
public static void main(String[] args){
//Replace Rock with the word Duke
String str_Sample = "RockStar";
System.out.println("Replace 'Rock' with 'Duke': " + str_Sample.replace("Rock", "Duke"));
}
}
輸出:
Replace 'Rock' with 'Duke': DukeStar
字串 tolowercase
和 touppercase
方法
我希望我的整個 String 以小寫或大寫顯示?
只需對需要轉換的字串使用 toLowercase()
或 ToUpperCase()
方法。
public class Sample_String{
public static void main(String[] args){
String str_Sample = "RockStar";
//Convert to LowerCase
System.out.println("Convert to LowerCase: " + str_Sample.toLowerCase());
//Convert to UpperCase
System.out.println("Convert to UpperCase: " + str_Sample.toUpperCase());
}
}
輸出:
Convert to LowerCase: rockstar
Convert to UpperCase: ROCKSTAR
要點注意事項:
-
字串是
final class
,即一旦建立,其值就無法改變。因此,String 物件稱為不可變物件。 -
Java 虛擬機器(JVM)建立一個記憶體位置,特別是對於名為
String Constant Pool
的字串。這就是為什麼 String 可以在沒有new
關鍵字的情況下初始化的原因。 -
String 類屬於
java.lang.String
層次結構。但是沒有必要匯入這個類。Java 平臺會自動提供它們。 -
可以覆蓋字串引用,但不會刪除其內容,即
String h1 = "hello"; h1 = "hello"+"world";
hello
字串不會被刪除,它只是失去了它的引用。 -
多個引用可以用於相同的字串,但它將出現在同一個地方,即
String h1 = "hello"; String h2 = "hello"; String h3 = "hello";
記憶體中,只建立了一個 hello
字串,它有三個參考, h1
、h2
和 h3
。
-
如果在
""
中引用數字,那麼它將變為字串,而不再是數字。這意味著,String S1 ="The number is: "+ "123"+"456"; System.out.println(S1);
那它就會列印
```java
The number is: 123456
```
假如,
``` java
String S1 = "The number is: "+(123+456);
System.out.println(S1);
```
那它將列印
``` java
The number is:579
```
`579` 是字串型別,而不是整型了。