Object类中,equals

该博客讨论了Java中equals方法的重写,强调了等价关系的性质,并通过一个示例展示了如何在Person类中正确实现equals方法,确保对象属性的比较。此外,还提到了在重写equals时通常需要同时重写hashCode方法以保持一致性。
摘要由CSDN通过智能技术生成
  • equals
    • public boolean equals​(Object obj)
      指示某个其他对象是否“等于”此对象。

      equals方法在非null对象引用上实现等价关系:

      • 自反性 :对于任何非空的参考值xx.equals(x)应该返回true
      • 它是对称的 :对于任何非空引用值xyx.equals(y)应该返回true当且仅当y.equals(x)回报true
      • 传递性 :对于任何非空引用值xyz ,如果x.equals(y)回报truey.equals(z)回报true ,然后x.equals(z)应该返回true
      • 它是一致的 :对于任何非空引用值xy ,多次调用x.equals(y)始终返回true或始终返回false ,前提是未修改对象上的equals比较中使用的信息。
      • 对于任何非空的参考值xx.equals(null)应该返回false

      Objectequals方法实现了对象上最具区别的可能等价关系; 也就是说,对于任何非空引用值xy ,当且仅当xy引用同一对象( x == y具有值true )时,此方法返回true

      请注意,通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等对象必须具有相等的哈希代码。

      参数

      obj - 要与之比较的参考对象。

      结果

      true如果此对象与obj参数相同; 否则为false

      另请参见:

      hashCode()HashMap

    • public class qxy {
      
      	public static void main(String[] args) {
      		person p=new person("张三",18);
      		person p1=new person("张三",18);
      		System.out.println(p);
      		System.out.println(p.toString());
      		System.out.println(p.equals(p1));
      	}
      
      }
      public class person {
            private String name;
            private  int age;
      	public String getName() {
      		return name;
      	}
      	public void setName(String name) {
      		this.name = name;
      	}
      	public int getAge() {
      		return age;
      	}
      	public void setAge(int age) {
      		this.age = age;
      	}
      	public person(String name, int age) {
      		super();
      		this.name = name;
      		this.age = age;
      	}
      	public person() {
      		super();
      		// TODO Auto-generated constructor stub
      	}
      	public String toString() {
      		return "我是这样一个人"+this.name+this.age;
      	}
      	@Override
      	public boolean equals(Object obj) {
      		if (this == obj)
      			return true;
      		if (obj == null)
      			return false;
      		if (getClass() != obj.getClass())
      			return false;
      		person other = (person) obj;
      		if (age != other.age)
      			return false;
      		if (name == null) {
      			if (other.name != null)
      				return false;
      		} else if (!name.equals(other.name))
      			return false;
      		return true;
      	}
      	
      
      }
      我是这样一个人张三18
      我是这样一个人张三18
      true

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睡不醒的小小秦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值