Equals方法

託帕發表於2018-09-04

Equals方法1
      java中一般情況下,不可以再用==來比較是否相等的情況(因為這樣比較的是物件的記憶體地址,而不是物件中的具體屬性),而是用Equals方法來比較,Equals方法屬於Object類並且不是final型別,所以任何類都可以繼承並且覆蓋該方法。
Equals方法2
      Equals方法在一般情況下都需要覆蓋成自己想要的方法而且配合多型可以實現強大的“比較”功能可以根據比較類中的任何資料,可以根據自己的需求來定義兩個物件是否相等的條件。
 

public class Test1 {
	public static void main(String[] args){
		B b1=new B(20);
		B b2=new B(20);
		System.out.println(b1==b2);
		System.out.println(b1.equals(b2));
	}
}
class B{
	private int i;
	B(int i){
		this.i=i;
	}
}

public class Test1 {
	public static void main(String[] args){
		B b1=new B(20);
		B b2=new B(20);
		System.out.println(b1.equals(b2));
	}
}
class B{
	private int i;
	B(int i){
		this.i=i;
	}
	public boolean equals(B b2){//覆蓋後的equals方法比較的不再是兩個物件的記憶體地址,而是根據自己的需求來決定
		if(this.i==b2.i){
			return true;
		}
		else{
			return false;
		}
	}
}

public class Test1 {
	public static void main(String[] args){
		B b1=new B(20);
		B b2=new B(20);
		//System.out.println(b1.equals(b2));
		C c1=new C(100);
		C c2=new C(100);
		System.out.println(c1.equals(c2));
	}
}
class B{
	private int i;
	B(int i){
		this.i=i;
	}
	public boolean equals(B b2){
		if(this.i==b2.i){
			return true;
		}
		else{
			return false;
		}
	}
}
class C extends B{
	private int j;
	C(int j){
		super(j);
		this.j=j;
	}
	public boolean equals(B b2){
		C c=(C)b2;
		if(this.j==c.j){
			return true;
		}
		else{
			return false;
		}
	}
}

相關文章