java中的==、equals方法和hashCode()方法

本文深入探讨了Java中==操作符、equals()方法和hashCode()方法的区别与联系。详细解释了==用于比较对象地址,equals()用于比较内容,以及两者与hashCode()之间的关系。同时,文章还提供了重写equals()和hashCode()方法时应遵循的准则。

一、Java中的==、equals()方法和hashCode()方法联系

1、== 比较的是地址

1 String s1 = "nihao";
2 String s2 = "nihao";
3 
4 // s1 == s2 因为s1和s2都是字面值"nihao"的引用,指向同一块地址,所以相等
5 System.out.println(s1 == s2); // true

 

2、equals()方法,比较内容,

比如String的equals()方法,首先会比较s1和s3的引用地址是否相等,如果不相等,则比较两个字符串对象内的字符,只有完全相等,才返回true

 

 

3、equals方法和hashcode方法的关系

  1. // 对同一个对象多次调用hashcode方法,总是返回相同的值
  2. // 如果a.equals(b),则a和b的hashcode相等
  3. // 如果a.hashcode==b.hashcode,则a.equals(b)可真可假
  4. // 如果a.hashcode!=b.hashcode,则a.equals(b)假

4、一些准则

* 若重写equals方法,有必须要重写hashcode方法,确保equals方法判断true的两个对象具有相同的hashcode返回值
* 如果equals(Object obj)返回false,即两个对象“不相同”,并不要求对这两个对象调用hashcode()方法得到两个不相同的数。说的简单点就是:“如果两个对象不相同,他们的hashcode可能相同”

转载于:https://www.cnblogs.com/wylwyl/p/10233809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值