Java のString クラスは、Java で文字列を操作するように設計されています。Java プログラムで定義されたすべての文字列リテラル (「abc」など) は、String クラスのインスタンスです。その主な特徴を見てみましょう。
- このクラスは
Serializable
およびインターフェイスを実装しますCharSequence
。パッケージに含まれているためjava.lang
、インポートする必要はありません。 - Java のStringクラスは最終クラスであり、子を持つことができません。
- String クラスは不変クラスです。つまり、そのオブジェクトは作成後に変更できません。String クラスのオブジェクトを生成する String オブジェクトに対する操作を行うと、新しいオブジェクトが作成されます。
- String クラス オブジェクトは不変であるため、スレッド セーフであり、マルチスレッド環境で使用できます。
toString
Java のすべてのオブジェクトは、すべての Java クラスがクラスから継承するメソッドを通じて文字列に変換できますObject
。
Java 文字列の操作
これは、Java で最もよく使用されるクラスの 1 つです。文字列内の特定の文字の分析、文字列の比較と検索、部分文字列の抽出、すべての文字を小文字と大文字に変換した文字列のコピーの作成などのメソッドがあります。String クラスのすべてのメソッドのリストは、公式ドキュメントにあります。Java は、プリミティブを文字列に、またはその逆に変換する連結 (文字列の接続) のための単純なメカニズムも実装しています。Java で String クラスを操作する例をいくつか見てみましょう。文字列の作成
String クラスのインスタンスを作成する最も簡単な方法は、それに文字列リテラルの値を割り当てることです。String s = "I love movies";
ただし、String クラスには、次のことを可能にする多くのコンストラクターがあります。
- 空の文字列を含むオブジェクトを作成する
- 文字列変数のコピーを作成する
- 文字配列に基づいて文字列を作成する
- バイト配列に基づいて文字列を作成します(エンコーディングを考慮して)
- 等
文字列の追加
Java で 2 つの文字列を追加するのは、. を使用すると非常に簡単です+
。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
、のシリアル番号を見つけてみましょう。ただし、Java の文字列内の文字のインデックス付けは 0 から始まることに注意してください Z
。Я
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
}
この Java クラスの操作は、JavaRush オンライン コースの初期レベルで学習されます。
- String の概要は、 Java 構文クエストのレベル 1、レクチャー 4 で提供されます。
- String の内部構造、substring メソッドはJava マルチスレッド クエストの第 2 レベル、第 3 講義で学習します。
- 文字列内の部分文字列の検索、取得、削除は、 Java マルチスレッド クエストの第 2 レベル、第 4 講義で学習されます。
- String.format メソッドは、 Java マルチスレッド クエストのレベル 2、レクチャー 6 で説明されています。
追加の情報源
String クラスに関する情報は、JavaRush コミュニティの他の記事でも提供されています。- Java の文字列- この記事では、Java での文字列の操作に関するいくつかの基本について説明します。
- Java 文字列。面接の質問と回答、パート 1 - この記事では、トピックに関する面接の質問について説明し
String
、質問に対する回答を説明とコード例とともに提供します。 - Java の文字列 (クラス java.lang.String) - この記事では、String クラスの詳細な分析を提供し、このクラスの操作の複雑さについても説明します。
GO TO FULL VERSION