/**
* ==&&equals区别
*
* ==比较的是栈内存中的值
* 对于基本类型数据,比较的是栈内存中的值
* 对于引用数据类型,比较的是栈内存中的值(值的真是含义是一个地址)
*
*equals()比较的对象在堆内存成员变量的内容
*Object的equals比较的是地址,作用和==相同的!
* public boolean equals(Object obj) {
return (this == obj);
}

*在使用equals方法比较引用对象时需重写equals方法
*/

重写equals方法时需注意以下几点:

public boolean equals(Object obj) {
//an1.equals(an2)
//an2就是obj an1就是this(当前对象)
//思路:判断obj和this的color和age属性是否相同
//如果相同,返回true 否则返回false
//判断传入的值是否为空
if(obj==null){
return false;
}
//判断类型是否是Animal
if(!(obj instanceof Animal)){
return false;
}

//强制类型转换
Animal other = (Animal)obj;
//此时equals()方法比较的是成员变量String类型,不存在地址
if(this.color.equals(other.color) && this.age==other.age){//
return true;
}else{
return false;
}

}

相关文章:

  • 2021-04-30
  • 2022-12-23
  • 2021-11-28
  • 2021-11-09
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2021-09-30
猜你喜欢
  • 2022-12-23
  • 2022-01-27
  • 2021-09-28
  • 2022-12-23
  • 2022-01-17
  • 2021-07-16
  • 2022-12-23
相关资源
相似解决方案