Javaにおける"="とequals()メソッド

4072 ワード

これはThinking in Javaで見たものです.
最初のプログラム
1 public class Exponents {

2     public static void main(String []args){

3         Integer n1=new Integer(47);

4         Integer n2=new Integer(47);

5         System.out.println(n1==n2);

6         System.out.println(n1!=n2);

7     }

8 }

出力結果:
1 false

2 true

Javaで宣言されたクラスオブジェクトはすべて参照であり,n 1,n 2の内容は同じであるが,両者は異なる格納場所を指す.
2番目のプログラム
1 public class Exponents {

2     public static void main(String []args){

3         Integer n1=new Integer(47);

4         Integer n2=new Integer(47);

5         System.out.println(n1.equals(n2));

6     }

7 

8 }

出力結果:true
equals()メソッドのデフォルトの動作は比較参照です.しかし、ほとんどのJavaクラスライブラリでは、比較オブジェクトの参照ではなく、equalsメソッドを使用してオブジェクトの内容を比較します.
3番目のプログラム:
 1 class Value{

 2     int i;

 3 }

 4 public class Exponents {

 5     public static void main(String []args){

 6         Value v1=new Value();

 7         Value v2=new Value();

 8         v1.i=v2.i=100;

 9         System.out.println(v1.equals(v2));

10     }

11 

12 }

出力結果:false
自分で定義したクラスはequals()メソッドを上書きする必要があります.