JavaのStringクラスを完全ガイド!初心者でもわかる文字列操作入門
生徒
「Javaで文字列を操作する方法について教えてもらえますか?」
先生
「もちろんです。JavaにはStringクラスがあり、文字列を簡単に操作するためのメソッドがたくさん用意されています。」
生徒
「具体的にはどんなことができるんですか?」
先生
「例えば、文字列の一部を取り出したり、文字を置き換えたり、文字列を結合したりと、様々な操作が可能です。詳しく見ていきましょう!」
1. Stringクラスとは?
JavaのStringクラスは、文字列を扱うための基本クラスです。文字列は変更不可(イミュータブル)で、一度作成した文字列の内容を変更することはできません。しかし、様々なメソッドを使って新しい文字列を生成したり、文字列の操作を行うことができます。
たとえば、文字列を結合したり、特定の文字を検索したり、文字列の長さを調べたりと、日常的に必要になる操作を簡単に行うことができます。
2. Stringクラスの代表的なメソッド
JavaのStringクラスには、多くの便利なメソッドが用意されています。ここでは代表的なものをいくつか紹介します。
length(): 文字列の長さを返します。charAt(int index): 指定した位置の文字を取得します。substring(int beginIndex, int endIndex): 文字列の一部を取り出します。toUpperCase()とtoLowerCase(): 文字列を大文字または小文字に変換します。replace(CharSequence target, CharSequence replacement): 文字列内の特定の文字や文字列を置き換えます。trim(): 文字列の前後にある空白を削除します。
これらのメソッドを活用することで、文字列を自在に操作できるようになります。
3. Stringクラスの基本的な使い方の例
次のコードは、Stringクラスのいくつかのメソッドを使った例です。
public class StringMethodsExample {
public static void main(String[] args) {
String text = " Hello, Java World! ";
// 文字列の長さを取得
int length = text.length();
System.out.println("文字列の長さ: " + length);
// 特定の文字を取得
char letter = text.charAt(7);
System.out.println("7番目の文字: " + letter);
// 一部の文字列を取り出す
String subText = text.substring(8, 12);
System.out.println("一部の文字列: " + subText);
// 大文字に変換
String upperText = text.toUpperCase();
System.out.println("大文字に変換: " + upperText);
// 文字列の置き換え
String replacedText = text.replace("Java", "World");
System.out.println("置き換え後: " + replacedText);
// 前後の空白を削除
String trimmedText = text.trim();
System.out.println("トリム後: " + trimmedText);
}
}
このプログラムを実行すると、次のような出力が得られます:
文字列の長さ: 21
7番目の文字: J
一部の文字列: Java
大文字に変換: HELLO, JAVA WORLD!
置き換え後: Hello, World World!
トリム後: Hello, Java World!
このように、Stringクラスのメソッドを使えば、文字列を様々な方法で操作することができます。
4. 文字列の比較:== と equals の違い・compareTo の使い方
== は参照(オブジェクトの場所)を比較し、equals() は中身(文字列の内容)を比較します。アルファベットの大小を無視するなら equalsIgnoreCase()、辞書順で並べ替えたいときは compareTo() / compareToIgnoreCase() を使います。
// 参照比較と内容比較
String a = "Java";
String b = new String("Java");
System.out.println(a == b); // 参照の比較(多くの場合 false)
System.out.println(a.equals(b)); // 内容の比較(true)
System.out.println(a.equalsIgnoreCase("java")); // 大小無視(true)
// 辞書順の比較(0:等しい, 0未満:小さい, 0より大:大きい)
int cmp = "Apple".compareTo("Banana"); // 負の値
int cmp2 = "Zoo".compareToIgnoreCase("apple"); // 正の値
// null セーフな比較(java.util.Objects)
boolean same = java.util.Objects.equals(a, b);
5. 部分一致の検索・判定:contains / indexOf / startsWith / endsWith
特定の文字列を含むか、どの位置にあるか、接頭辞・接尾辞に一致するかを調べられます。見つからない場合の indexOf() は -1 を返す点に注意しましょう。
String text = "Hello, Java World!";
// 含むかどうか
boolean hasJava = text.contains("Java");
// 最初/最後に現れる位置(0始まり)
int first = text.indexOf("o"); // 最初の 'o'
int last = text.lastIndexOf("o"); // 最後の 'o'
// 接頭辞/接尾辞の判定(第2引数で開始位置を指定可能)
boolean start = text.startsWith("Hello");
boolean end = text.endsWith("World!");
boolean startAt7 = text.startsWith("Java", 7); // 7文字目から"Java"か
6. 文字列の分割と結合:split と String.join
区切り文字で分割するには split()、複数の要素を 1 つの文字列に連結するには String.join() を使います。split() は正規表現を受け取るため、記号によってはエスケープが必要です(例:\\.)。
String csv = "apple,banana,orange";
// 分割(","で区切る)
String[] parts = csv.split(",");
// 空要素も保持して分割(第2引数に負数)
String[] keepEmpty = "a,,b,".split(",", -1); // ["a", "", "b", ""]
// 結合(区切り文字を指定)
String joined = String.join(" / ", parts); // "apple / banana / orange"
// 配列やリストを結合
java.util.List<String> list = java.util.Arrays.asList("A", "B", "C");
String s = String.join("-", list); // "A-B-C"
まとめ
今回の記事では、JavaのStringクラスについて詳しく解説しました。Stringクラスは、文字列操作を簡単に行える非常に便利なクラスであり、プログラム開発において重要な役割を果たします。この記事で取り上げたメソッドを活用することで、文字列の長さ取得、特定の文字取得、文字列の部分取り出し、文字列の変換、置き換え、トリムなど、様々な操作が可能であることを学びました。
特に初心者にとっては、文字列の扱いを理解することがJavaプログラミングの基本スキルを習得する第一歩となります。この記事で取り上げたサンプルコードを実行しながら、実際の挙動を確認してみることをお勧めします。また、複雑な文字列操作が必要な場合には、今回触れた基本メソッドを組み合わせることで柔軟に対応できます。
public class SummaryExample {
public static void main(String[] args) {
String text = "Learn Java Strings!";
// 基本的な文字列操作
System.out.println("Original: " + text);
System.out.println("Lowercase: " + text.toLowerCase());
System.out.println("Uppercase: " + text.toUpperCase());
System.out.println("Substring (6, 10): " + text.substring(6, 10));
System.out.println("Replace 'Java' with 'Programming': " + text.replace("Java", "Programming"));
}
}
このコードを実行することで、Stringクラスの主要な操作に再び触れることができます。初心者の方は、この例をアレンジしてみて、自分の目的に合った操作ができるか試してみてください。
生徒
「Stringクラスのメソッドって、すごく便利ですね。特に文字列の置き換えや部分取り出しが簡単にできるのが良いと思いました。」
先生
「その通りです。文字列の基本的な操作がしっかり理解できれば、プログラムの見通しも良くなりますよ。次はこれを活用して、もっと応用的な課題にも挑戦してみましょう。」
生徒
「はい!例えば、ユーザーが入力した文字列を処理する機能を作ってみたいです。」
先生
「それは良い目標ですね。ユーザー入力のバリデーションやフォーマット変換も、Stringクラスのメソッドを活用すればスムーズに実装できますよ。」