Javaで文字列を比べる方法まとめ:equals・==・compareTo・equalsIgnoreCaseの違いをやさしく解説!

Java

はじめに

Javaの学習中、「文字列の比較がうまくいかない」「==で比較したのに合ってない」といった経験をしたことはありませんか?

文字列の比較は、Java初心者がよくつまずくポイントです。この記事では、Javaで文字列を比べる正しい方法とその違い・使い方を、わかりやすく丁寧に解説します。


1. 「==」と「equals()」の違いを知ろう

「==」は“同じものを見ているか”をチェック

Javaで==を使うと、文字列の中身ではなく、参照先(メモリ上の場所)が同じかどうかを比較します。


「equals()」は“中身の内容”を比較

文字列の内容が同じかどうかを比較する場合は、**equals()**を使います。

結論:

  • == → 参照先が同じか?
  • equals() → 内容が同じか?

2. 大文字・小文字を無視して比較する:equalsIgnoreCase()

このように、大文字・小文字を区別せずに比較したいときには、equalsIgnoreCase()が便利です。


3. compareTo()で辞書順に比較する

compareTo()は、文字列を**辞書順(アルファベット順)**で比較します。

数値の結果によって並び替えや判定が可能です。


4. null安全に比較する:Objects.equals()

nullと比較する場合、equals()だとNullPointerExceptionが出る可能性があります。

Objects.equals()を使えば、どちらかがnullでも安全に比較可能です。


5. 部分一致や正規表現を使った比較

startsWith()/endsWith()

matches():正規表現で一致判定


6. 間違いやすい比較パターンと注意点

リテラルとnewの違い

文字列プールとヒープの違いを理解する

リテラル文字列はJavaの「文字列プール」に格納され、==でもtrueになることがありますが、newで生成した文字列はヒープに格納されるため、==ではfalseになります。


7. 実践コード例まとめ


8. 使い分けガイド

比較方法使う場面備考
==文字列の参照(アドレス)が同じか?内容比較には不向き
equals()文字列の内容が同じか?基本の比較方法
equalsIgnoreCase()大文字・小文字を無視したいときメールアドレスなど
compareTo()辞書順を調べたいときソート処理などに便利
Objects.equals()nullが混じっているかも?null安全な比較が可能

9. 学習の進め方とおすすめの次ステップ

文字列の比較は、プログラムを書くうえで毎日のように使います。ミスを減らすには、まずは正しい使い分けをしっかり覚えることが大切です。

そのためにまずは「絶対にJavaプログラマーになりたい人へ。」を読んで、基本をしっかり学びましょう。そして、実践的なコードレビューや転職支援を受けたい方は「サイゼントアカデミー」のサポートを活用するのが近道です!


まとめ

  • ==equals() は意味がまったく違う!
  • 中身を比べるなら equals()、nullが不安なら Objects.equals()
  • 辞書順は compareTo()、大文字小文字無視は equalsIgnoreCase()
  • 慣れていないうちは、常に「どの比較方法がふさわしいか」を意識しよう!

コメント

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