メモリアドレスとコンテンツの比較

2091 ワード

A==Bは、同じメモリアドレスを指すかどうかの2つの参照を比較します.A.equals(B)はA,Bの内容が同じかどうかを比較し,Class Aのequals内容を複写する必要があることが多い.
//  A,B         equals   。
public class A {
   String name;
   int age;

   public A (String name, int age){
        this.name= name;
        this.age= age;
    }

   public boolean equals( Object o) {
      if( o instanceof A)
      {
         A a2= (A) o;

         if(this.name == a2.name && this.age == a2.age)
            return true;
      }
      else
         return false;
   }
}

==メモリアドレスを2つ比較
A a= new A ("simon", 25);
A b= new A ("simon", 25);

if( a== b) //false,   new          。
if(a.equals(b)) //true,     equals  .