Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Java辞典

  1. トップページ
  2. Java辞典
  3. 文字列.equals() / equalsIgnoreCase() / compareTo()

文字列.equals() / equalsIgnoreCase() / compareTo()

文字列が等しいかどうかを比較したり、辞書順での大小を比較したりするメソッドです。Javaでは == 演算子はオブジェクトの参照を比較するため、文字列の内容を比較するには必ず『equals()』を使用してください。

構文
// 文字列の内容が等しいかどうかを比較します。
文字列.equals(Object anObject);

// 大文字・小文字を区別せずに比較します。
文字列.equalsIgnoreCase(String anotherString);

// 辞書順で比較し、差分を整数で返します。
文字列.compareTo(String anotherString);

// 大文字・小文字を区別せずに辞書順で比較します。
文字列.compareToIgnoreCase(String str);
メソッド一覧
メソッド概要
equals(Object anObject)文字列の内容が等しい場合は true、そうでない場合は false を返します。
equalsIgnoreCase(String anotherString)大文字・小文字を区別せずに文字列を比較します。等しければ true を返します。
compareTo(String anotherString)辞書順で比較します。等しければ 0、呼び出し元が小さければ負の整数、大きければ正の整数を返します。
compareToIgnoreCase(String str)大文字・小文字を区別せずに辞書順で比較します。
サンプルコード
// equals() で文字列の内容を比較します。
String a = "Java";
String b = "Java";
System.out.println(a.equals(b)); // 『true』と出力されます。

// == は参照を比較するため意図しない結果になる場合があります。
String c = new String("Java");
System.out.println(a == c);      // 『false』と出力されます。
System.out.println(a.equals(c)); // 『true』と出力されます。

// equalsIgnoreCase() で大文字・小文字を区別せずに比較します。
System.out.println("JAVA".equalsIgnoreCase("java")); // 『true』と出力されます。

// null チェックを先に行ってから equals() を呼び出します。
String input = null;
System.out.println("Java".equals(input)); // 『false』と出力されます。(NullPointerException を回避できます)

// compareTo() で辞書順を比較します。
System.out.println("apple".compareTo("banana")); // 負の値が出力されます。(apple の方が辞書順で前)
System.out.println("Java".compareTo("Java"));    // 『0』と出力されます。

// ソートの基準として使用できます。
java.util.List<String> langs = new java.util.ArrayList<>(java.util.Arrays.asList("Python", "Java", "C", "Swift"));
langs.sort(String::compareTo);
System.out.println(langs); // 辞書順に並び替えられたリストが出力されます。
概要

Javaで文字列を比較する際は == ではなく必ず『equals()』を使ってください。== はオブジェクトの参照(メモリアドレス)を比較するため、同じ内容の文字列でも new String() で生成した場合は false になります。文字列リテラルのみを使う場合は == が偶然 true になることもありますが、これは文字列プールの仕組みによるものであり、意図的に利用すべきではありません。

また、比較元が null の可能性がある場合は null.equals(...) を呼び出すと NullPointerException が発生します。文字列リテラルを左側に書く(例: "Java".equals(input))か、Objects.equals(a, b) を使うと安全です。

文字列の大文字・小文字変換には『toUpperCase() / toLowerCase()』、数値との変換には『String.valueOf()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。