【Java学習|初心者向け】Javaの文字列操作をマスターしよう!contains, startsWith, endsWithの使い分け

1. 導入:なぜ文字列判定が重要なのか

Javaで開発をしていると、「入力されたメールアドレスに@が含まれているか?」「ファイル名が.csvで終わっているか?」といった、文字列のチェックを行う場面が非常に多くあります。これらを適切に処理できないと、バグの原因になったり、コードが読みづらくなったりします。今回は、Javaで文字列を検索するための基本3メソッドを、シニアエンジニアの視点で分かりやすく解説します。

2. 基礎知識:JavaのStringクラスとは

JavaのString型は「不変(イミュータブル)」です。一度作成した文字列の内容は変更できません。そのため、文字列を操作する際は、新しい文字列を生成するメソッドをうまく活用する必要があります。今回紹介する3つのメソッドは、特定の文字列が含まれているか、特定の文字で始まっているか、終わっているかを判断する「判定用メソッド」で、戻り値としてtrueかfalseのboolean型を返します。

3. 実装/解決策:メソッドの使い分け

用途に応じて以下の3つを使い分けます。

contains(CharSequence s): 文字列のどこかに指定した文字列が含まれていればtrueを返します。
startsWith(String prefix): 文字列が指定したプレフィックス(接頭辞)で始まっていればtrueを返します。
endsWith(String suffix): 文字列が指定したサフィックス(接尾辞)で終わっていればtrueを返します。

4. サンプルプログラム

以下のコードをコピーして、ご自身の環境で実行してみてください。

public class StringCheckSample {
    public static void main(String[] args) {
        String fileName = "report_2023.pdf";

        // 1. contains: 特定の単語が含まれているか確認
        if (fileName.contains("report")) {
            System.out.println("ファイル名に'report'が含まれています。");
        }

        // 2. startsWith: ファイル名の接頭辞を確認
        if (fileName.startsWith("report")) {
            System.out.println("ファイル名は'report'から始まっています。");
        }

        // 3. endsWith: 拡張子などの確認(非常に重要!)
        if (fileName.endsWith(".pdf")) {
            System.out.println("PDFファイルです。");
        } else {
            System.out.println("PDFファイルではありません。");
        }
    }
}

5. 応用・注意点:現場で陥りやすいバグの回避策

現場のコードレビューでよく見かける注意点を2つ伝授します。

注意点1:NullPointerException(NPE)への備え
チェック対象の文字列がnullの場合、これらのメソッドを呼び出すとプログラムが停止します。判定前に必ずnullチェックを行うか、Optionalクラスを活用して安全に処理しましょう。

注意点2:大文字・小文字の区別
これらのメソッドは、デフォルトで大文字と小文字を厳密に区別します。もし「.PDF」や「.pdf」の両方に対応したい場合は、一度toLowerCase()で小文字に変換してから判定するなどの工夫が必要です。

また、頻繁に文字列結合を行う場合は、StringBuilderを使用し、最終的な結果に対してこれらのメソッドを使うのがメモリ効率の面でベストプラクティスです。基本をしっかり押さえて、堅牢なプログラムを書いていきましょう!

コメント

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