Javaにおける"="とequals()メソッド
4072 ワード
これはThinking in Javaで見たものです.
最初のプログラム
出力結果:
Javaで宣言されたクラスオブジェクトはすべて参照であり,n 1,n 2の内容は同じであるが,両者は異なる格納場所を指す.
2番目のプログラム
出力結果:true
equals()メソッドのデフォルトの動作は比較参照です.しかし、ほとんどのJavaクラスライブラリでは、比較オブジェクトの参照ではなく、equalsメソッドを使用してオブジェクトの内容を比較します.
3番目のプログラム:
出力結果:false
自分で定義したクラスはequals()メソッドを上書きする必要があります.
最初のプログラム
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()メソッドを上書きする必要があります.