2026.10.28Java応用 #22|StringクラスTECH BLOG

Java応用 #22|Stringクラスを使いこなそう!文字列の比較・検索・操作

この記事でわかること

  • Stringクラスの基本
  • 文字列を正しく比較する方法
  • 文字列の長さを取得する方法
  • 文字列の一部を取り出す方法
  • 文字列の検索や置換を行う方法

Stringクラスとは?

Javaで文字列を扱うときには、Stringクラスを使用します。

String name = "田中";
String message = "こんにちは";

これまでの基礎編でも、String型の変数を使って文字列を扱ってきました。

Stringは、文字列を管理するためのクラスです。文字列の長さを調べたり、一部を取り出したり、特定の文字が含まれているかを確認したりできます。

今回は、実際のプログラムでよく使うStringのメソッドを学習しましょう。


① length()で文字列の長さを取得する

文字列の長さを調べるには、length()メソッドを使用します。

String name = "Java";

System.out.println(name.length());

実行結果

4

「Java」は4文字なので、結果は4になります。

日本語の文字列でも確認してみましょう。

String message = "こんにちは";

System.out.println(message.length());

実行結果

5

JavaのStringでは、length()は文字列のUTF-16コード単位の数を返します。一般的な日本語や英数字の文字列では、文字数を確認する用途で利用できます。

なお、配列のlengthとStringのlength()は書き方が異なります。

  • 配列 → length
  • String → length()
  • ArrayList → size()

② equals()で文字列を比較する

2つの文字列が同じ内容かどうかを確認するには、equals()メソッドを使用します。

String name1 = "Java";
String name2 = "Java";

System.out.println(name1.equals(name2));

実行結果

true

文字列の内容が同じなので、trueが返されます。

次の例も確認してみましょう。

String name1 = "Java";
String name2 = "Python";

System.out.println(name1.equals(name2));

実行結果

false

文字列の内容が異なるため、falseが返されます。


③ ==とequals()の違い

Javaで文字列を比較するときに、特に注意したいのが==とequals()の違いです。

  • == → 参照が同じかどうかを比較する
  • equals() → 文字列の内容が同じかどうかを比較する

例えば、次のコードを見てみましょう。

String name1 = new String("Java");
String name2 = new String("Java");

System.out.println(name1 == name2);
System.out.println(name1.equals(name2));

実行結果

false
true

new String(“Java”)を2回実行しているため、別々のStringオブジェクトが作られています。

そのため、参照を比較する==ではfalseになります。

一方、文字列の内容は同じなので、equals()ではtrueになります。

文字列の内容を比較したい場合は、基本的にequals()を使うと覚えておきましょう。


④ substring()で文字列の一部を取り出す

文字列の一部を取り出すには、substring()メソッドを使用します。

String text = "Programming";

System.out.println(text.substring(0, 7));

実行結果

Program

substring(0, 7)では、開始位置0から、終了位置7の直前までを取り出します。

文字列の位置は0から始まります。

文字: P r o g r a m m i n g
位置: 0 1 2 3 4 5 6 7 8 9 10

終了位置の文字は含まれないため、substring(0, 7)では位置0から位置6までの文字が取り出されます。

開始位置だけを指定することもできます。

String text = "Programming";

System.out.println(text.substring(7));

実行結果

ming

substring(7)では、位置7から文字列の最後までを取り出します。


⑤ contains()で文字列が含まれているか調べる

ある文字列の中に、特定の文字列が含まれているかを確認するには、contains()メソッドを使用します。

String message = "Javaを勉強しています。";

System.out.println(message.contains("Java"));
System.out.println(message.contains("Python"));

実行結果

true
false

「Java」は含まれているためtrue、「Python」は含まれていないためfalseになります。

contains()は、大文字と小文字を区別します。


⑥ indexOf()で文字列の位置を調べる

指定した文字や文字列が、最初に現れる位置を調べるには、indexOf()メソッドを使用します。

String text = "Java Programming";

System.out.println(text.indexOf("Java"));
System.out.println(text.indexOf("Program"));
System.out.println(text.indexOf("Python"));

実行結果

0
5
-1

検索した文字列が見つかった場合は、その開始位置が返されます。

見つからない場合は、-1が返されます。

contains()が「含まれているかどうか」を調べるのに対して、indexOf()は「どこにあるか」を調べるために利用できます。


⑦ replace()で文字列を置き換える

文字列の一部を置き換えるには、replace()メソッドを使用します。

String message = "Javaは難しいです。";

String newMessage = message.replace("難しい", "楽しい");

System.out.println(newMessage);

実行結果

Javaは楽しいです。

replace()では、置き換えたい文字列と、新しい文字列を指定します。

ここで注意したいのは、Stringは不変(immutable)のオブジェクトだということです。

replace()を実行しても、元のmessage自体が変更されるわけではありません。置き換えた結果の文字列が返されます。

String message = "Javaは難しいです。";

message.replace("難しい", "楽しい");

System.out.println(message);

実行結果

Javaは難しいです。

置き換えた結果を利用したい場合は、戻り値を変数に代入するなどして受け取ります。


⑧ toUpperCase()とtoLowerCase()

英字を大文字や小文字に変換したい場合は、次のメソッドを使用します。

  • toUpperCase() → 大文字に変換する
  • toLowerCase() → 小文字に変換する
String text = "Java";

System.out.println(text.toUpperCase());
System.out.println(text.toLowerCase());

実行結果

JAVA
java

これらのメソッドも、元の文字列を直接変更するのではなく、変換した文字列を返します。


Stringの主なメソッドを整理しよう

  • length() → 文字列の長さを取得する
  • equals() → 文字列の内容を比較する
  • substring() → 文字列の一部を取り出す
  • contains() → 指定した文字列が含まれるか調べる
  • indexOf() → 指定した文字列の位置を調べる
  • replace() → 文字列を置き換えた結果を取得する
  • toUpperCase() → 英字を大文字に変換する
  • toLowerCase() → 英字を小文字に変換する

よくある間違い

① 文字列の比較に==を使う

文字列の内容を比較したい場合は、基本的にequals()を使用します。

② substring()の終了位置を含めてしまう

substring(開始位置, 終了位置)では、終了位置の文字は含まれません。

③ replace()を呼び出しただけで元の文字列が変わると思う

Stringは不変なので、置き換えた結果を利用するには、戻り値を受け取る必要があります。

④ indexOf()が見つからない場合の結果を忘れる

検索した文字列が見つからない場合、indexOf()は-1を返します。


まとめ

  • Stringは文字列を扱うためのクラス
  • length()で文字列の長さを取得できる
  • equals()で文字列の内容を比較できる
  • substring()で文字列の一部を取り出せる
  • contains()やindexOf()で検索できる
  • replace()で置き換えた結果を取得できる
  • Stringは不変なので、操作結果を受け取って利用する

Stringのメソッドを使いこなせると、入力された文字列の確認や、文章の加工などを行いやすくなります。

次回は、Javaで日付や時刻を扱うための日付・時刻APIについて学習します。