JavaではStringを内容と参照元で比較することができます。
認証(equals()メソッド)、ソート(compareTo()メソッド)、参照一致(==演算子)などを利用します。
JavaでStringを比較する方法は大きく分けて三通りあります。
-
- equals()メソッドを使用する
- 演算子==を使用する
- compareTo()メソッドを使用する
1. equals() メソッドによる文字列比較
String equals()メソッドは、文字列の元の内容を比較します。文字列の値が等しいかどうかを比較します。Stringクラスには、以下の2つのメソッドがあります。
- public boolean equals(Object another) は、この文字列と指定されたオブジェクトを比較します。
- public boolean equalsIgnoreCase(String another) は、大文字と小文字を区別せずに、別の文字列を比較します。
class Teststringcomparison1{ public static void main(String args[]){ String s1="Sachin"; String s2="Sachin"; String s3=new String("Sachin"); String s4="Saurav"; System.out.println(s1.equals(s2));//true System.out.println(s1.equals(s3));//true System.out.println(s1.equals(s4));//false } }
class Teststringcomparison2{ public static void main(String args[]){ String s1="Sachin"; String s2="SACHIN"; System.out.println(s1.equals(s2));//false System.out.println(s1.equalsIgnoreCase(s2));//true } }
演算子==による文字列比較
演算子==は値ではなく、参照を比較します。
class Teststringcomparison3{ public static void main(String args[]){ String s1="Sachin"; String s2="Sachin"; String s3=new String("Sachin"); System.out.println(s1==s2);//true (because both refer to same instance) System.out.println(s1==s3);//false(because s3 refers to instance created in nonpool) } }
compareTo()メソッドによる文字列の比較
StringクラスのcompareTo()メソッドは、辞書順に値を比較し、最初の文字列が2番目の文字列より小さいか、等しいか、大きいかを表す整数の値を返します。
s1とs2が2つのStringオブジェクトであるとします。
- s1 == s2 : 2つが同じ値の場合、メソッドは0を返します。
- s1 > s2 : s1が大きい場合、メソッドは正の値を返します。
- s1 < s2 : s2が大きい場合、メソッドは負の値を返す。
class Teststringcomparison4{ public static void main(String args[]){ String s1="Sachin"; String s2="Sachin"; String s3="Ratan"; System.out.println(s1.compareTo(s2));//0 System.out.println(s1.compareTo(s3));//1(because s1>s3) System.out.println(s3.compareTo(s1));//-1(because s3 < s1 ) } }