Javaでの文字列操作は非常に重要なスキルであり、多くのプログラムやアプリケーションで必須の機能です。Javaの`String`クラスは、文字列を操作するための豊富なメソッドを提供しています。本記事では、Javaでの文字列操作について基本から応用までを解説し、複数のサンプルコードと実行結果を交えながらわかりやすく説明します。
Javaの文字列(String)とは?
Javaの`String`クラスは不変(immutable)であり、一度作成された文字列は変更できません。この不変性は、Javaのパフォーマンスを高めるための重要な要素です。文字列を操作する際には、新しい文字列が作成され、元の文字列は変更されません。
public class Main { public static void main(String[] args) { String greeting = "Hello, World!"; System.out.println(greeting); // 出力: Hello, World! greeting = greeting.toUpperCase(); System.out.println(greeting); // 出力: HELLO, WORLD! } }
上記の例では、`greeting`文字列を大文字に変換していますが、元の文字列は変更されず、新しい大文字の文字列が生成されます。
文字列の基本操作
`String`クラスは、文字列の操作に便利なメソッドを多数提供しています。ここでは、いくつかの基本的な操作方法を見てみましょう。
文字列の結合
`String`クラスの`concat()`メソッドまたは`+`演算子を使用して、2つ以上の文字列を結合できます。
public class Main { public static void main(String[] args) { String firstName = "Taro"; String lastName = "Yamada"; // 文字列の結合 String fullName = firstName + " " + lastName; System.out.println(fullName); // 出力: Taro Yamada // concatメソッドを使用 String fullNameConcat = firstName.concat(" ").concat(lastName); System.out.println(fullNameConcat); // 出力: Taro Yamada } }
`+`演算子と`concat()`メソッドはどちらも文字列を結合できますが、`+`演算子は直感的に使えるため、よく利用されます。
文字列の長さを取得する
`length()`メソッドを使用すると、文字列の長さ(文字数)を取得できます。
public class Main { public static void main(String[] args) { String message = "Java Programming"; int length = message.length(); System.out.println("The length of the message is: " + length); // 出力: The length of the message is: 16 } }
この例では、`message`文字列の長さが16であることが表示されます。スペースも1つの文字としてカウントされる点に注意してください。
部分文字列の取得
`substring()`メソッドを使用すると、指定した範囲の部分文字列を取得できます。開始位置は0から始まります。
public class Main { public static void main(String[] args) { String text = "Hello, Java!"; String subText = text.substring(7, 11); // 7番目から10番目までの文字 System.out.println(subText); // 出力: Java } }
この例では、文字列`”Hello, Java!”`の7番目から10番目までの文字を抽出して、`”Java”`を取得しています。開始インデックスは含まれますが、終了インデックスは含まれない点に注意してください。
文字列の比較
文字列を比較するには、`equals()`メソッドまたは`compareTo()`メソッドを使用します。`==`演算子は、文字列の内容ではなく、参照の同一性を比較するため、通常は`equals()`を使用します。
public class Main { public static void main(String[] args) { String str1 = "Java"; String str2 = "Java"; String str3 = new String("Java"); // equalsメソッドで内容を比較 System.out.println(str1.equals(str2)); // 出力: true System.out.println(str1.equals(str3)); // 出力: true // == 演算子で参照を比較 System.out.println(str1 == str2); // 出力: true System.out.println(str1 == str3); // 出力: false } }
この例では、`equals()`メソッドを使用して、文字列の内容が等しいかを確認しています。一方、`==`演算子はオブジェクトの参照が同じかどうかを比較します。
文字列の置換
`replace()`メソッドを使用すると、文字列内の特定の文字や部分文字列を置換できます。
public class Main { public static void main(String[] args) { String originalText = "I love Java"; String newText = originalText.replace("Java", "Python"); System.out.println(newText); // 出力: I love Python } }
この例では、`”Java”`という部分文字列が`”Python”`に置き換えられ、新しい文字列が生成されます。
文字列のトリム(前後の空白の削除)
`trim()`メソッドを使用すると、文字列の前後の余計な空白を削除できます。このメソッドは、文字列の内容を変更せず、新しい文字列を返します。
public class Main { public static void main(String[] args) { String message = " Hello, Java! "; String trimmedMessage = message.trim(); System.out.println(trimmedMessage); // 出力: Hello, Java! } }
この例では、文字列の前後にある空白が削除され、結果として`”Hello, Java!”`が表示されます。
文字列の分割
`split()`メソッドを使用すると、指定した区切り文字に基づいて文字列を分割できます。結果として、分割された部分文字列の配列が返されます。
public class Main { public static void main(String[] args) { String data = "apple,banana,orange"; String[] fruits = data.split(","); for (String fruit : fruits) { System.out.println(fruit); } } }
この例では、カンマ(`,`)で文字列を分割し、それぞれのフルーツを個別に表示しています。
まとめ
Javaでの文字列操作は、非常に多様で強力です。`String`クラスの不変性を理解し、`concat()`や`substring()`、`equals()`といったメソッドを適切に活用することで、効率的な文字列操作が可能になります。また、`split()`や`replace()`といったメソッドを駆使して、複雑な文字列操作にも対応できるようになります。本記事で紹介した基本的な操作に慣れておけば、Javaプログラミングにおける文字列操作に自信を持てるでしょう。