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;
}
}
}