equals()メソッド

このequals()メソッドはオブジェクトの比較に用いられます。

2つの変数が持っているオブジェクトが同一であれば結果にtrueを返し オブジェクトが異なればfalseが返されます。

では、サンプルプログラムを見ていきます。

サンプルプログラム(Sample70.java)

class Sample70{
    public static void main(String args[]){
   
   Sample70 obj1 = new Sample70();
   Sample70 obj2 = new Sample70();
   Sample70 obj3 = obj1;          //obj3 と obj1は同じオブジェクトを参照


   System.out.println("obj1.equals(obj3) は " + obj1.equals(obj3));
   System.out.println("obj1.equals(obj2) は " + obj1.equals(obj2));


    }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。

このような結果になります
ここでは、Sample70クラスのオブジェクトを参照変数obj1が参照しています。
さらにSample70クラスを参照変数obj2で参照しています。

この時点でobj1とobj2は別々のオブジェクトを参照していることになります。

その後に参照変数obj3にobj1を代入しています。
つまりobj1 と obj3 は同じオブジェクトを参照していることになります。

サンプルプログラム(Sample70_1.java)==演算子を用いる方法

class Sample70_1{
    public static void main(String args[]){
   Sample70_1 obj1 = new Sample70_1();
   Sample70_1 obj2 = new Sample70_1();
   Sample70_1 obj3 = obj1;          //obj3 と obj1は同じオブジェクトを参照

   System.out.println("obj1==obj3 は " + (obj1==obj3));
   System.out.println("obj1==obj2 は " + (obj1==obj2));

    }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

安すぎない理由がある カゴヤのレンタルサーバー
■超オススメのWADAXレンタルサーバー


コンパイル・実行します。

結果はequals()メソッドを使用しても==演算子でも意味合いは同じになります。

Stringクラスのequals()メソッド

equals()メソッドはオブジェクトの比較に使用するメソッドであることは説明しました。

しかしStringクラスで、equals()メソッドを定義した場合は「2つのオブジェクトが同じかどうか」
を調べるのではなく「2つのオブジェクトが表している文字列の内容が同じかどうか」を 調べるように定義されます。

サンプルプログラム(Sample70_2.java)

class Sample70_2{
    public static void main(String args[]){

    String str1 =new String( "こんにちわ");
    String str2 =new String( "こんにちわ");
    String str3 = str1;
   
    System.out.println("str1.equals(str3) は " + str1.equals(str3));
    System.out.println("str1.equals(str2) は " + str1.equals(str2));

    System.out.println("------------------------------------");
  
    System.out.println("str1==str3 は " + (str1==str3));
    System.out.println("str1==str2 は " + (str1==str2));
    }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行します。

このようになります。

つまり参照しているオブジェクトが異なっていてもそれが表している文字列が同じであれば
equals()メソッドの場合はtrueになります。

ここで注意しなければいけないことがあります。
==演算子の場合はやはりオブジェクトの 参照先が異なればfalseになるということです。

ページのトップへ戻る