Java文字列比較3選

Java

Java文字列比較3選

JavaではStringを内容と参照元で比較することができます。

認証(equals()メソッド)、ソート(compareTo()メソッド)、参照一致(==演算子)などを利用します。

JavaでStringを比較する方法は大きく分けて三通りあります。

    1. equals()メソッドを使用する
    2. 演算子==を使用する
    3. 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オブジェクトであるとします。

  1. s1 == s2 : 2つが同じ値の場合、メソッドは0を返します。
  2. s1 > s2 : s1が大きい場合、メソッドは正の値を返します。
  3. 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 )  
 }  
}  
  • この記事を書いた人

朝倉卍丸

シングルモルトスコッチなどのお土産を持ってきた人を助けるのが好きです。サービスの分割が重要ですが、まあ昔ながらの方法でやりたいこともありますよね。

よく読まれている記事

条件の0=0は全てが正であるを意味するSQL 1

SQLの条件に0=0のような記述を見かけます。 変わった書き方の条件ですが、これは「全てが正である」事を意味しており、結合条件の場合はCROSS JOINと同じです。 下記の例で言えば、結合するsub ...

DISTINCTを使わないで重複排除を考えるSQL 2

SQLのDISTINCTはEXISTSとかGROUP BYでなんとかする事もできます。 DISTINCTは暗黙的なソートがされますが、何のDBを使うにせよ過去のバージョンならともかく、最近のバージョン ...

RFC 5322に準拠させた正規表現言語別 3

RFC5322で定義されている正規表現を、各言語の正規表現に変化させた形になります。 完全な電子メール正規表現は存在しないので、結局のところ何かの公式基準に従っていたとしても、自分が携わるサービスのル ...

-Java