JavaA2Z

KAB-studio > プログラミング > JavaA2Z > equalsとは

equals

日本語 一致比較
英語 equals
ふりがな いこーるず
フリガナ イコールズ

解説

変数の「実際の値が一致しているか」を調べるためのメソッド
通常、値の比較には==演算子を使用するが、この方法が有効なのはプリミティブ型のみである。クラスの場合、変数が持つ「参照の値」を比較してしまい、正しい比較がえない。
そこでクラス同士の比較に使用するのがequals()メソッドである。このメソッド引数として渡されたクラスと値が一致していたらtrueを、一致していなければfalseを返す。
 
equals()メソッドObjectクラスメソッドのため、クラスであれば必ず使用できる。
ただし、自分で作成したクラスでequals()メソッドを使用する場合には、equals()メソッドオーバーライドし、クラスの中のデータを比較する実装う必要がある。
 
通常、equals()メソッド実装は、全てのフィールドが一致しているか比較すればよい。
ただし、基本的に「他のクラス」に対して「一致している」と見なすのはやめた方がいいだろう。たとえば「日付」を意味するクラスがふたつあった場合に、この異なるクラスをequals()メソッドで比較した時に「日付が同じだからtrue」を返すというのは正しくない。値は正しいが、クラスそのものが異なるためである。
このように、本当に値のみで比較する場合にはcompareTo()メソッドを使用する。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // Stringクラスを2つ作ります。
        String string1 = new String( "あいうえお" );
        String string2 = new String( "あいうえお" );
        // そのまま比較すると、参照で比較するため一致しません。
        System.out.println( string1 == string2 );
        // false
        // 中身で比較する場合にはequals()メソッドを使用します。
        System.out.println( string1.equals( string2 ) );
        // true

        // 自クラスで実装したequals()メソッドを使用します。
        Sample sample1 = new Sample();
        Sample sample2 = new Sample();
        sample1.i = 100;
        sample1.string = "あいうえお";
        sample2.i = 100;
        sample2.string = "あいうえお";
        System.out.println( sample1.equals( sample2 ) );
        // true
    }

    /** Sampleクラスが持つ値。 */
    public int i = 0;
    public String string = "";

    /**
    *    equals()メソッドのオーバーライド。
    */
    public boolean equals( Object object )
    {
        Sample sample = (Sample)object;
        // iの比較の結果を返します。
        return ( this.i == sample.i ) && ( this.string.equals( sample.string ) );
        // このように、プリミティブ型であれば==の結果を、
        // クラスであればequals()メソッドの結果を返すのが
        // 基本的なパターンです。
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // Stringクラスを2つ作ります。
        String string1 = new String( "あいうえお" );
        String string2 = new String( "あいうえお" );
        // そのまま比較すると、参照で比較するため一致しません。
        System.out.println( string1 == string2 );
        // false
        // 中身で比較する場合にはequals()メソッドを使用します。
        System.out.println( string1.equals( string2 ) );
        // true

        // 自クラスで実装したequals()メソッドを使用します。
        Sample sample1 = new Sample();
        Sample sample2 = new Sample();
        sample1.i = 100;
        sample1.string = "あいうえお";
        sample2.i = 100;
        sample2.string = "あいうえお";
        System.out.println( sample1.equals( sample2 ) );
        // true
    }

    /** Sampleクラスが持つ値。 */
    public int i = 0;
    public String string = "";

    /**
    *    equals()メソッドのオーバーライド。
    */
    public boolean equals( Object object )
    {
        Sample sample = (Sample)object;
        // iの比較の結果を返します。
        return ( this.i == sample.i ) && ( this.string.equals( sample.string ) );
        // このように、プリミティブ型であれば==の結果を、
        // クラスであればequals()メソッドの結果を返すのが
        // 基本的なパターンです。
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/06/10
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。