Java 中的String 類別旨在處理 Java 中的字串。Java 程式中定義的所有字串文字(例如「abc」)都是 String 類別的實例。讓我們看看它的主要特徵:
- 該類別實作
Serializable
和介面CharSequence
。由於它包含在包中java.lang
,因此不需要導入。 - Java 中的String類別是最終類,不能有子類別。
- String 類別是一個不可變類,這意味著它的物件在創建後就無法更改。對 String 物件的任何會產生 String 類別物件的操作都會導致建立一個新物件。
- 由於其不變性,String 類別物件是線程安全的,可以在多線程環境中使用。
toString
Java中的每個物件都可以透過所有Java類別繼承自該類別的方法轉換為字串Object
。
使用 Java 字串
這是 Java 中最常用的類別之一。它具有分析字串中某些字元、比較和搜尋字串、提取子字串、建立所有字元都轉換為小寫和大寫的字串副本等方法。String類別的所有方法的列表可以在官方文件中找到。Java 還實作了一種簡單的串聯機制(連接字串),將基元轉換為字串,反之亦然。讓我們來看看在 Java 中使用 String 類別的一些範例。建立字串
建立 String 類別實例的最簡單方法是為其指派字串文字的值:String s = "I love movies";
但是,String 類別有許多建構函數,允許您:
- 建立一個包含空字串的對象
- 建立字串變數的副本
- 基於字元數組創建字串
- 基於位元組數組創建字串(考慮編碼)
- ETC。
字串加法
在 Java 中加入兩個字串非常簡單,使用+
. Java 讓您可以將變數和字串文字相互添加:
public static void main(String[] args) {
String day = "Day";
String and = "And";
String night = "Night";
String dayAndNight = day + " " + and + " " + night;
}
透過將 String 類別的物件與其他類別的物件相加,我們將後者簡化為字串形式。其他類別的物件到字串表示形式的轉換是透過toString
物件上的隱式方法呼叫來執行的。讓我們透過以下範例來演示這一點:
public class StringExamples {
public static void main(String[] args) {
Human max = new Human("Max");
String out = "java object: " + max;
System.out.println(out);
// Output: Java object: Person named Max
}
static class Human {
private String name;
public Human(String name) {
this.name = name;
}
@Override
public String toString() {
return "The Man with the Name" + name;
}
}
}
字串比較
要比較字串,可以使用以下方法equals()
:
public static void main(String[] args) {
String x = "Test String";
System.out.println("Test String".equals(x)); // true
}
當比較字串時大小寫對我們來說不重要時,我們需要使用以下方法equalsIgnoreCase()
:
public static void main(String[] args) {
String x = "Test String";
System.out.println("test string".equalsIgnoreCase(x)); // true
}
將物件/基元轉換為字串
要將任何 Java 類別或任何原始資料類型的實例轉換為字串表示形式,可以使用下列方法String.valueOf()
:
public class StringExamples {
public static void main(String[] args) {
String a = String.valueOf(1);
String b = String.valueOf(12.0D);
String c = String.valueOf(123.4F);
String d = String.valueOf(123456L);
String s = String.valueOf(true);
String human = String.valueOf(new Human("Alex"));
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(s);
System.out.println(human);
/*
Output:
1
12.0
123.4
123456
true
Person named Alex
*/
}
static class Human {
private String name;
public Human(String name) {
this.name = name;
}
@Override
public String toString() {
return "The Man with the Name" + name;
}
}
}
將字串轉換為數字
通常您需要將字串轉換為數字。原始類型包裝類別具有正是用於此目的的方法。所有這些方法都以單字 parse 開頭。考慮下面將字串轉換為整數 (Integer
) 和小數 ( Double
) 的情況:
public static void main(String[] args) {
Integer i = Integer.parseInt("12");
Double d = Double.parseDouble("12.65D");
System.out.println(i); // 12
System.out.println(d); // 12.65
}
將字串集合轉換為字串表示形式
如果需要透過任意分隔符號將某個字串集合的所有元素轉換為字串表示形式,可以使用 Java String 類別的以下方法:join(CharSequence delimiter, CharSequence... elements)
join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
delimiter
是元素分隔符,elements
是字串陣列/字串集合實例。讓我們看一個範例,其中將字串列表轉換為字串,並用分號分隔每個字串:
public static void main(String[] args) {
List<String> people = Arrays.asList(
"Philip J. Fry",
"Turanga Leela",
"Bender Bending Rodriguez",
"Hubert Farnsworth",
"Hermes Conrad",
"John D. Zoidberg",
"Amy Wong"
);
String peopleString = String.join("; ", people);
System.out.println(peopleString);
/*
Output:
Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong
*/
}
將字串拆分為字串數組
該操作由該方法執行。split(String regex)
分隔符號是一個字串正規表示式regex
。在下面的範例中,我們將執行與上一個範例中執行的操作相反的操作:
public static void main(String[] args) {
String people = "Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong";
String[] peopleArray = people.split("; ");
for (String human : peopleArray) {
System.out.println(human);
}
/*
Output:
Philip J. Fry
Turanga Leela
Bender Bending Rodriguez
Hubert Farnsworth
Hermes Conrad
John D. Zoidberg
Amy Wong
*/
}
確定行中元素的位置
在Java語言中,String提供了一組方法來確定字串中字元/子字串的位置:indexOf(int ch)
indexOf(int ch, int fromIndex)
indexOf(String str)
indexOf(String str, int fromIndex)
lastIndexOf(int ch)
lastIndexOf(int ch, int fromIndex)
lastIndexOf(String str)
lastIndexOf(String str, int fromIndex)
ch
— 您正在尋找的符號 (char
)str
- 搜尋字串fromIndex
— 搜尋元素的位置- 方法
indexOf
- 傳回找到的第一個元素的位置 - 方法
lastIndexOf
- 返回找到的最後一個元素的位置
A
, K
, Z
,的序號Я
,但請記住,Java 中字串中的字元索引是從零開始的:
public static void main(String[] args) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(alphabet.indexOf('A')); // 0
System.out.println(alphabet.indexOf('K')); // 10
System.out.println(alphabet.indexOf('Z')); // 25
System.out.println(alphabet.indexOf('Я')); // -1
}
從字串中提取子字串
為了從字串中提取子字串,Java中的String類別提供了方法:substring(int beginIndex)
substring(int beginIndex, int endIndex)
public static void main(String[] args) {
String filePath = "D:\\Movies\\Futurama.mp4";
int lastFileSeparatorIndex = filePath.lastIndexOf('\\');
String fileName = filePath.substring(lastFileSeparatorIndex + 1);
System.out.println(fileName); //9
}
將字串轉換為大寫/小寫:
String 類別提供了將字串轉換為大寫和小寫的方法:toLowerCase()
toUpperCase()
public static void main(String[] args) {
String fry = "Philip J. Fry";
String lowerCaseFry = fry.toLowerCase();
String upperCaseFry = fry.toUpperCase();
System.out.println(lowerCaseFry); // philip j. fry
System.out.println(upperCaseFry); // PHILIP J. FRY
}
JavaRush 線上課程的初級階段研究如何使用該 Java 類別:
- Java 文法任務的第 1 級第 4 講介紹了字串
- Java多執行緒任務第二講第三講,學習String的內部結構、子字串方法
- 在 Java 多執行緒任務的第二級第四講中研究了尋找、取得、刪除字串中的子字串
- Java 多執行緒任務的第 2 級第 6 講介紹了String.format 方法
其他來源
JavaRush 社群的其他文章中也提供了有關 String 類別的資訊:- Java 中的字串- 本文介紹了在 Java 中使用字串的一些基礎知識。
- Java 字串。面試問題和答案,第 1 部分- 本文討論有關該主題的面試問題
String
,並提供問題的答案以及解釋和代碼示例。 - Java 中的字串(類別 java.lang.String) - 本文對 String 類別進行了更深入的分析,並討論了使用此類的複雜性。
GO TO FULL VERSION