Javaで文字列を比較する際には「equalsメソッド」と「==演算子」の違いを理解することが重要です。
本記事では、equalsメソッドの基本的な使い方や、==演算子との違い、大文字小文字を無視する比較方法、null値の取り扱いなどをわかりやすく解説します。
これを読めば、JavaのString比較を適切に使い分けられるようになります!
equalsメソッドとは?基本から理解する
equalsの基本的な役割
equalsメソッド は、文字列の値が等しいかどうかを比較するために使用します。文字列の参照先ではなく、値そのものが比較対象となるのが特徴です。
String s1 = "Java";
String s2 = new String("Java");
// true(文字列の値が等しいため)
System.out.println(s1.equals(s2));
なお、文字列を含むの「参照型」と「基本データ型」の違いに関しては、以下の記事も参考にしてください。

==演算子との違いは何?
参照型の比較においては、「==演算子」では参照先が同一かどうかを比較します。
String s1 = "Java";
String s2 = new String("Java");
// false(参照先が異なるため)
System.out.println(s1 == s2);
先ほどの例を用いて、s1とs2間で「==演算子」で比較をすると、値自体は「”Java”」の同一の文字列なのにも関わらず、s1とs2のそれぞれで異なるStringオブジェクトを生成していることになるため、比較結果はfalseとなります。
図で「equals()メソッド」と「==演算子」の違いをまとめてみましたので、ぜひ参考にしてください。

JavaでString比較にequalsを使う方法
大文字小文字を区別する場合の比較:equals
通常のequals
メソッドは、大文字と小文字を区別して値を比較します。
String s1 = "Abc";
String s2 ="abc";
// false(「"A"」と「"a"」の大文字・小文字が異なるため)
System.out.println(s1.equals(s2));
大文字小文字を無視した比較:equalsIgnoreCase
一方、大文字と小文字の差異を無視してString比較をする場合は、文字通りのメソッド名であるequalsIgnoreCase()メソッドを用います。
String s1 = "Abc";
String s2 ="abc";
// true(「"A"」と「"a"」の大文字・小文字の違いを無視して比較するため)
System.out.println(s1.equalsIgnoreCase(s2));
equalsメソッドを使う際の注意点
null値との比較でエラーを防ぐ
以下のように、s1に対してequalsメソッドを用いると、nullPointerExceptionの例外が発生します。
String s1= null;
String s2="abc";
// s1がNULLのため、nullPointerExceptionが発生
System.out.println(s1.equals(s2));
以下にこの例外処理を回避するための具体性な方法を示します。
例外の回避方法①:nullが入らない可能性のあるオブジェクトを先に呼び出す
String s1= null;
// 後半のs1がNULLだが、前半のs2の方はNULL値になり得ないため正常に評価される
System.out.println(”abc”.equals(s1));
例外の回避方法②:事前にNULL判定を行う
String s1= null;
String s2="abc";
if(s1 != null) {
// NULL判定により、このブロック内には移行しない
System.out.println(s1.equals(s2));
}
よくある質問
Q:equalsとcompareToの違いは?
equalsメソッドと似たメソッドにcomparableインターフェイスで定義されている、compareToメソッドがあります。
- equals: 値が等しいか(true/false)を判定。
- compareTo: 辞書順での大小関係を判定(負の数/0/正の数を返す)。
compareToメソッドの使用目的として、「ソートや順序付けの比較」として用いられることが多いと言えるでしょう。
String s1 = "apple";
String s2 = "banana";
/**
* 【戻り値】
* 負の整数 (s1 < s2)
* 0 (s1 == s2)
* 正の整数 (s1 > s2)
*/
System.out.println(s1.compareTo(s2)); // 負の値 (appleはbananaより辞書順が小さい)
以下に両メソッドの違いを表にしましたので、参考にしてください。
特徴 | equals() | compareTo() |
目的 | 等価性の比較 | 順序の比較 |
戻り値 | true または false | 整数 (負、0、正) |
定義元 | Objectクラス | Comparableインターフェース |
主な用途 | オブジェクトの同値性判定 | ソートや順序付けの判定 |
まとめ
- equalsメソッドは、String型の値そのものを比較するために使用します。
- 一方、参照型の比較においては、「==演算子」では参照先が同一かどうかを比較する。
- null値の取り扱いには注意が必要です。
この記事を参考に、正確な文字列比較をマスターしてください!