JavaのStringクラスとendsWithメソッドを完全解説!初心者でも理解できる文字列の末尾チェック
生徒
「Javaで文字列が特定の文字列で終わっているかどうかを確認する方法はありますか?」
先生
「はい、JavaではStringクラスのendsWithメソッドを使うと、特定の文字列で終わっているかを簡単に確認できます。」
生徒
「それは便利ですね!どのように使うんですか?」
先生
「では、基本的な使い方を詳しく見ていきましょう!」
1. JavaのStringクラスとは?文字列操作の基本を学ぼう
「1. JavaのStringクラスとは?文字列操作の基本を学ぼう」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
JavaのStringクラスは、文字の並び(テキストデータ)を扱うための専用ツールのようなものです。プログラミングにおいて、ユーザーの名前を表示したり、ファイル名をチェックしたりと、文字列を使わないシーンはほとんどありません。Java初心者の方がまず最初にマスターすべき、非常に重要なクラスです。
このクラスには、文字列を切り取ったり、長さを調べたりするための便利な「メソッド(機能)」がたくさん詰まっています。今回紹介する末尾チェックも、その強力な機能のひとつです。
大きな特徴として、Stringクラスは不変(immutable)という性質を持っています。これは「一度作った文字列の中身は絶対に変わらない」というルールです。例えば、文字列の一部を書き換える操作をしても、元の文字列が変化するのではなく、新しい文字列が別に作成されます。この仕組みによって、Javaのプログラムは安全かつ高速に動作するよう設計されています。
Javaでの文字列の作り方(基本サンプル)
まずは、最もシンプルな文字列の作成方法を見てみましょう。ダブルクォーテーションで囲むだけで、簡単に文字列を扱うことができます。
public class StringBasicExample {
public static void main(String[] args) {
// 文字列型の変数「message」を作成して挨拶を代入
String message = "こんにちは、Javaの世界へ!";
// 文字列の長さを表示するメソッド(length)を使ってみる
int length = message.length();
System.out.println("中身: " + message);
System.out.println("文字数: " + length);
}
}
このように、Stringクラスを使いこなせるようになると、プログラムで自由自在にテキストを操れるようになります。次は、特定の文字で終わっているかを判定する具体的な手法に進みましょう。
2. endsWithメソッドの使い方:文字列の末尾を判定する
Javaで「特定の文字で終わっているか」をチェックしたいときに便利なのが、endsWithメソッドです。例えば、ファイル名が「.jpg」で終わっているか、URLが「/」で終わっているかなど、実務でも非常によく使われる重要な機能です。
endsWithメソッドの基本構文
このメソッドは、調べたい文字列に対して以下のように記述します。結果は「はい(true)」か「いいえ(false)」の2択(boolean型)で返ってきます。
public boolean endsWith(String suffix)
引数のsuffix(サフィックス)には、確認したい末尾の文字列を指定します。
【初心者向け】具体的なサンプルプログラム
プログラミングが初めての方でも分かりやすいよう、身近な「ファイル形式のチェック」を例にコードを見てみましょう。大文字と小文字は区別されるという点に注目してください。
public class EndsWithExample {
public static void main(String[] args) {
// 1. チェック対象の文字列を準備
String fileName = "my-photo.png";
// 2. 末尾が ".png" かどうかを判定
boolean isPng = fileName.endsWith(".png");
// 3. 結果を表示
System.out.println("このファイルはPNG画像ですか?: " + isPng);
// 注意点:大文字と小文字は区別されます
boolean isUpperPng = fileName.endsWith(".PNG");
System.out.println("大文字の .PNG で判定した場合: " + isUpperPng);
}
}
実行結果
このファイルはPNG画像ですか?: true
大文字の .PNG で判定した場合: false
プログラミング初心者への解説
このプログラムでは、まずfileNameという箱に「my-photo.png」という名前を入れました。次にendsWith(".png")を使うことで、コンピュータに「この名前の最後は .png で合ってる?」と聞きいています。
もしユーザーがアップロードしたファイルが画像かどうかを自動判別したい場合、この1行を書くだけで簡単にシステムを作ることができます。非常にシンプルですが、入力チェックやデータ整理には欠かせないメソッドです。
このように、endsWithメソッドを活用することで、複雑な条件分岐を書かなくてもスマートに文字列の末尾を確認できるようになります。
3. endsWithメソッドを使うときの注意点とエラー回避のコツ
JavaのendsWithメソッドは非常に便利ですが、プログラミング初心者の方がつい忘れがちな「落とし穴」がいくつかあります。エラー(例外)でプログラムが止まってしまわないよう、以下の3つのポイントをしっかり押さえておきましょう。
- NullPointerException(ヌルポ)に注意: 比較する文字(引数)に
null(空っぽの状態)を渡すと、プログラムがエラーで強制終了してしまいます。 - 大文字と小文字は「別物」: コンピュータは
.JPGと.jpgを違う文字として判断します。拡張子の判定などでは特に注意が必要です。 - 空文字の判定: 実は、どんな文字列に対しても
endsWith("")(空の文字)を判定させると、結果は常にtrueになります。
これらを考慮して、初心者の方でも安心して使える「安全な書き方」のサンプルプログラムを見てみましょう。
public class SafeEndsWithExample {
public static void main(String[] args) {
// 判定したい元の文字列
String fileName = "photo.JPG";
// チェックしたい後ろの文字
String suffix = ".jpg";
// 1. suffixがnullでないことを確認
// 2. 大文字小文字を区別せずに判定するために、一度小文字(toLowerCase)に揃える
if (suffix != null && fileName.toLowerCase().endsWith(suffix.toLowerCase())) {
System.out.println("指定した拡張子(.jpg)で終わっています。");
} else {
System.out.println("一致しないか、またはデータが空です。");
}
}
}
このプログラムのポイントは、toLowerCase() を使って「大文字小文字の差」を無視できるように工夫している点です。これにより、ユーザーが .JPG と入力しても .jpg と入力しても、正しく判定できるようになります。
また、if 文の中で suffix != null を先にチェックすることで、万が一中身が空っぽでもエラーを出さずに安全に処理をスキップする「ガード句」のような役割を果たしています。
指定した拡張子(.jpg)で終わっています。
4. endsWithメソッドの具体的な活用シーンと実践例
「4. endsWithメソッドの具体的な活用シーンと実践例」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
JavaのendsWithメソッドは、単に「末尾が一致するか」を調べるだけでなく、日常的なプログラミングの現場で非常に多く活用されています。プログラミング初心者の方が最初に出会う「条件分岐(if文)」との相性も抜群です。
ファイル形式の自動判定
最も一般的な使い道は、拡張子(ファイル名の末尾に付く .jpg や .pdf など)のチェックです。例えば、大量のファイルの中から「テキストファイルだけを見つけて処理したい」という場合に、このメソッドが活躍します。
public class FileCheckExample {
public static void main(String[] args) {
// 判定したいファイル名のリスト(配列)
String[] files = { "document.pdf", "image.jpg", "notes.txt", "report.docx" };
System.out.println("--- テキストファイルの抽出を開始します ---");
for (String file : files) {
// もしファイル名の末尾が「.txt」で終わっていたら
if (file.endsWith(".txt")) {
System.out.println("【対象】" + file + " はテキストファイルです。");
}
}
}
}
このプログラムを実行すると、コンソールには次のように表示されます。
--- テキストファイルの抽出を開始します ---
【対象】notes.txt はテキストファイルです。
プログラムの解説:なぜこの書き方が重要なのか
上記のコードでは、forという仕組みを使って複数のファイル名を一つずつ順番にチェックしています。file.endsWith(".txt")の部分が「この文字で終わっているかな?」と一瞬で判断してくれるため、大量のデータがあっても人間が手作業で探す必要はありません。
また、このメソッドは大文字と小文字を区別するという点に注意しましょう。例えば「.TXT」で終わるファイルを判定したい場合は、あらかじめ文字を小文字に変換しておくか、両方のパターンをチェックする工夫をすることで、より精度の高いプログラムになります。
このように、endsWithメソッドをマスターすると、特定のデータだけを効率よく抽出する「フィルタリング機能」が簡単に実装できるようになります。
5. よくある質問と回答(FAQ)
Q: endsWithメソッドは、文字列のどこかに含まれている「部分一致」にも対応していますか?
A: いいえ、endsWithは「末尾が指定した文字で終わっているか」だけを判定します。
Javaで文字列の中に特定の文字が含まれているか(部分一致)を調べたい場合は、containsメソッドを使うのが一般的です。
例えば、「こんにちは」という文章の中に「にち」が入っているか探すようなケースですね。
初心者の方でも分かりやすいように、endsWith(末尾一致)とcontains(部分一致)の違いを比較したサンプルコードを見てみましょう。
public class SearchExample {
public static void main(String[] args) {
String fileName = "report_2026.pdf";
// 1. endsWith の場合(末尾が .pdf かどうかを確認)
boolean isPdf = fileName.endsWith(".pdf");
System.out.println("PDFファイルですか? : " + isPdf); // 結果: true
// 2. contains の場合(どこかに 2026 が含まれているか確認)
boolean hasYear = fileName.contains("2026");
System.out.println("名前に 2026 が含まれますか? : " + hasYear); // 結果: true
}
}
このように、やりたいことに合わせてメソッドを使い分けるのがJavaプログラミングのコツです。
「最後だけチェックしたいなら endsWith」、「場所を問わず含まれているか知りたいなら contains」と覚えておきましょう。
6. まとめ
本記事では、JavaのStringクラスに含まれるendsWithメソッドについて詳しく学びました。このメソッドは、文字列が特定の文字列で終わっているかを確認するための便利なツールです。主な用途として、ファイルの拡張子の確認やURLのドメインの判定などが挙げられます。
endsWithメソッドはtrueかfalseを返すシンプルなメソッドですが、プログラムの中で非常に重要な役割を果たします。また、nullチェックや大文字小文字の区別など、安全に使用するための注意点も押さえることができました。
以下に、実践的な使用例を示します。
public class PracticalEndsWithExample {
public static void main(String[] args) {
String[] emails = { "user@example.com", "admin@domain.org", "support@example.com" };
for (String email : emails) {
if (email.endsWith("@example.com")) {
System.out.println(email + " はexample.comのメールアドレスです。");
} else {
System.out.println(email + " は異なるドメインのメールアドレスです。");
}
}
}
}
このプログラムを実行すると、次のような結果が得られます。
user@example.com はexample.comのメールアドレスです。
admin@domain.org は異なるドメインのメールアドレスです。
support@example.com はexample.comのメールアドレスです。
このようにendsWithメソッドを活用することで、文字列の末尾チェックを簡単に行うことができます。この記事で学んだ知識を基に、自分のプログラムに応用してみてください。
生徒
「endsWithメソッドでファイルやURLを簡単にチェックできるのが分かりました!すごく便利ですね。」
先生
「その通りです。特に、条件分岐を使うことで、多くの文字列操作を効率的に処理できますよ。」
生徒
「これから、ファイル管理やログのチェックに使ってみたいと思います!」
先生
「ぜひ試してみてください。他のメソッドと組み合わせるとさらに柔軟な処理が可能になりますよ。」
この記事を読んだ人からの質問
「この記事を読んだ人からの質問」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。