Stringの基本操作をマスターしよう

docs

前回はJavaの基礎の基礎、変数とデータ型について学んだね。今回は、みんながプログラムで本当によく使う「文字列(String)」に焦点を当てて、その便利な操作方法をマスターしていこう!

Stringってなんだ?

Javaで「文字列」を扱うときに使うのが「String型」だ。文字の並び、つまりテキストデータを扱うための型で、例えば「こんにちは」「Javaプログラミング」みたいなものがStringにあたるよ。

前回学んだ変数とデータ型を思い出すと、intが数字を扱うように、Stringは文字を扱うんだね。

Java

// String型の変数を宣言して、文字列を代入
String greeting = "Hello, Java!";
System.out.println(greeting); // 実行結果: Hello, Java!

String name = "田中";
String message = name + "さん、ようこそ!"; // 文字列同士を連結することもできる
System.out.println(message); // 実行結果: 田中さん、ようこそ!

paizaで実行した結果

Stringの便利な操作あれこれ

String型には、文字列を操作するための便利なメソッドがたくさん用意されているんだ。いくつか代表的なものを見ていこう!

1. 文字列の連結(+演算子 と concat())

複数の文字列をくっつけて一つにしたいときに使うよ。一番簡単なのは+演算子を使う方法だね。

Java

String firstName = "山田";
String lastName = "太郎";

// +演算子を使った連結
String fullName = firstName + lastName;
System.out.println(fullName); // 実行結果: 山田太郎

// スペースを挟んで連結
String spacedName = firstName + " " + lastName;
System.out.println(spacedName); // 実行結果: 山田 太郎

もう一つ、concat()メソッドを使う方法もあるよ。

Java

String part1 = "Java ";
String part2 = "Programming";
String fullText = part1.concat(part2);
System.out.println(fullText); // 実行結果: Java Programming

普段使いでは+演算子の方が手軽でよく使われるけど、たくさんの文字列を効率的に連結したい場合は「StringBuilder」や「StringBuffer」というクラスを使うのが一般的だよ。これらはまた別の機会に詳しく解説するね。

paizaで実行した結果

2. 文字列の長さ(length())

文字列が何文字で構成されているかを知りたいときは、length()メソッドを使うよ。

Java

String text = "こんにちは、世界!";
int length = text.length();
System.out.println("文字列の長さ: " + length); // 実行結果: 文字列の長さ: 8 (「、」や「!」も1文字として数えるよ)

String empty = "";
System.out.println("空文字の長さ: " + empty.length()); // 実行結果: 空文字の長さ: 0

paizaで実行した結果

3. 特定の文字や単語が含まれているかチェック(contains())

ある文字列の中に、特定の文字や単語が含まれているかどうかを確認したいときに便利だよ。結果はtruefalseで返ってくるよ。

Java

String sentence = "今日は良い天気です。";

boolean containsGood = sentence.contains("良い");
System.out.println("「良い」が含まれているか: " + containsGood); // 実行結果: 「良い」が含まれているか: true

boolean containsBad = sentence.contains("悪い");
System.out.println("「悪い」が含まれているか: " + containsBad); // 実行結果: 「悪い」が含まれているか: false

paizaで実行した結果

4. 文字列の一部を置き換える(replace())

文字列の中にある特定の文字や単語を別のものに置き換えたいときに使うよ。

Java

String originalText = "りんご、みかん、バナナ";

// 「みかん」を「いちご」に置き換え
String newText = originalText.replace("みかん", "いちご");
System.out.println(newText); // 実行結果: りんご、いちご、バナナ

// 文字単位で置き換えも可能
String replaceChar = "Hello Java";
String replacedChar = replaceChar.replace('a', 'o'); // 'a' を 'o' に
System.out.println(replacedChar); // 実行結果: Hello Jovo

元の文字列が変わるわけじゃなく、新しい文字列が作られて返されることに注意してね。

paizaで実行した結果

5. 文字列を分割する(split())

特定の区切り文字を使って、文字列を複数の部分に分けたいときに使うよ。結果はStringの配列として返ってくるんだ。

Java

String fruits = "りんご,みかん,バナナ,いちご";

// カンマ(,)で分割
String[] fruitArray = fruits.split(",");

System.out.println("分割されたフルーツ:");
for (String fruit : fruitArray) {
    System.out.println(fruit);
}
/* 実行結果:
分割されたフルーツ:
りんご
みかん
バナナ
いちご
*/

String data = "名前:太郎;年齢:30;性別:男性";
String[] parts = data.split(";");
for (String part : parts) {
    System.out.println(part);
}
/* 実行結果:
名前:太郎
年齢:30
性別:男性
*/

この例のように、split()はCSVデータやログデータの解析なんかにすごく役立つよ。

paizaで実行した結果

6. 文字列の比較(equals() と equalsIgnoreCase())

2つの文字列が同じかどうかを比較したいときに使うよ。==演算子でも比較できるけど、これはオブジェクトの参照先が同じかを見るもので、文字列の内容が同じかを見るのには適していないんだ。

  • equals(): 大文字・小文字を区別して比較する。
  • equalsIgnoreCase(): 大文字・小文字を区別せずに比較する。

Java

String str1 = "Apple";
String str2 = "Apple";
String str3 = "apple";

// equals()での比較
System.out.println("str1とstr2は等しいか (equals): " + str1.equals(str2));       // 実行結果: true
System.out.println("str1とstr3は等しいか (equals): " + str1.equals(str3));       // 実行結果: false (大文字小文字を区別する)

// equalsIgnoreCase()での比較
System.out.println("str1とstr3は等しいか (equalsIgnoreCase): " + str1.equalsIgnoreCase(str3)); // 実行結果: true (大文字小文字を区別しない)

文字列の内容を比較したいときは、必ずequals()equalsIgnoreCase()を使おう!

paizaで実行した結果

7. 文字列のトリミング(trim())

文字列の先頭や末尾にある空白文字(スペース、タブ、改行など)を取り除きたいときに使うよ。

Java

String messyText = "      Hello World!     "; // 全角スペースも混じってる例
String cleanText = messyText.trim();
System.out.println("元の文字列: '" + messyText + "'");
System.out.println("トリミング後: '" + cleanText + "'");
// 実行結果:
// 元の文字列: '      Hello World!     '
// トリミング後: 'Hello World!'

ユーザーからの入力データなんかは、意図しない空白が入っていることがあるから、trim()は入力値の整形によく使われるよ。

paizaで実行した結果

8. 文字列の変換(toLowerCase() と toUpperCase())

文字列をすべて小文字にしたり、すべて大文字にしたりしたいときに使うよ。

Java

String mixedCase = "Java Programming";

String lowerCase = mixedCase.toLowerCase();
System.out.println("小文字に変換: " + lowerCase); // 実行結果: 小文字に変換: java programming

String upperCase = mixedCase.toUpperCase();
System.out.println("大文字に変換: " + upperCase); // 実行結果: 大文字に変換: JAVA PROGRAMMING

paizaで実行した結果

9. 文字列の一部を切り出す(substring())

文字列の中から、指定した範囲の文字だけを切り出して新しい文字列を作りたいときに使うよ。

  • substring(開始インデックス): 指定したインデックスから文字列の最後までを切り出す。
  • substring(開始インデックス, 終了インデックス): 指定した開始インデックスから終了インデックスの直前までを切り出す。

※インデックスは0から始まるよ。

Java

String sample = "abcdefg";

// インデックス2(c)から最後まで切り出す
String sub1 = sample.substring(2);
System.out.println("sub1: " + sub1); // 実行結果: sub1: cdefg

// インデックス1(b)からインデックス4(e)の直前まで(dまで)を切り出す
String sub2 = sample.substring(1, 4);
System.out.println("sub2: " + sub2); // 実行結果: sub2: bcd

paizaで実行した結果

10. 文字列が特定の文字で始まるか/終わるか(startsWith() / endsWith())

文字列が特定のプレフィックス(接頭辞)で始まるか、または特定のサフィックス(接尾辞)で終わるかをチェックしたいときに使うよ。

Java

String fileName = "report_2024.pdf";

// "report"で始まるか?
boolean startsWithReport = fileName.startsWith("report");
System.out.println("reportで始まるか: " + startsWithReport); // 実行結果: reportで始まるか: true

// ".pdf"で終わるか?
boolean endsWithPdf = fileName.endsWith(".pdf");
System.println(".pdfで終わるか: " + endsWithPdf); // 実行結果: .pdfで終わるか: true

paizaで実行した結果

Stringは「不変」ってどういうこと?

ここまでいくつかのString操作のメソッドを見てきたけど、大事なポイントがあるんだ。それは「Stringオブジェクトは不変(Immutable)である」ということ。

どういうことかと言うと、一度作られたStringオブジェクトの中身は、後から変更できないということなんだ。

「え? replace()とかconcat()で文字列が変わったじゃん!」と思った人もいるかもしれないね。実はあれは、元の文字列を変更しているんじゃなくて、新しい文字列のオブジェクトを作って返しているんだ。

Java

String original = "Hello";
String changed = original.concat(" World"); // 新しいStringオブジェクトが作られる

System.out.println(original); // 実行結果: Hello (originalの中身は変わっていない)
System.out.println(changed);  // 実行結果: Hello World (新しいオブジェクトの内容)

この性質を理解しておくと、プログラムの挙動を正しく把握できるし、思わぬバグを防ぐことにも繋がるから、ぜひ覚えておいてね!

paizaで実行した結果


まとめ

今回はJavaで非常によく使う「文字列(String)」の基本操作について解説したよ。

  • Stringは文字列を扱うデータ型。
  • 文字列の連結 (+演算子, concat())
  • 文字列の長さ (length())
  • 文字列のチェック (contains(), startsWith(), endsWith())
  • 文字列の加工 (replace(), trim(), toLowerCase(), toUpperCase(), substring())
  • 文字列の分割 (split())
  • 文字列の比較 (equals(), equalsIgnoreCase())
  • Stringオブジェクトは**不変(Immutable)**である

これらの操作は、Javaでプログラミングをする上で基礎中の基礎だけど、非常に強力なツールになるから、ぜひ手を動かして試してみてね。

次回は、いよいよプログラムの**「流れ」を制御する**ための「条件分岐(if文)」について見ていくよ。これが分かると、プログラムができることがグッと広がるから楽しみにしててね!

【前回の記事】 

インポート文で他のパッケージのクラスを使う | ToolDocs

コメント

タイトルとURLをコピーしました