为什么java内要判断两个对象是否相等呢?
1个回答
2022-12-14 · 百度认证:北京惠企网络技术有限公司官方账号
关注
展开全部
一个标准的实体类的4大基本规则:1.封装(属性私有化,分别提供对应的get与set方法等),2、提供无参构造,3、重写:toString,equals,hashCode这3个方法,4、实现java.io.Serializable接口。所以java要判断两个对象是否相等。
先说equals,重写它就是为了以后比较对象是否相等,比如你问题中的假如父类是person,子类是student,那么当我们new了几个student后,在程序中怎么去判断这几个student实例是否是同一个学生呢?这时如果我们的student重写了equals(比如你按照学号来比较),那么你就可以用S1.equals(S2)来比较了。
至于hashCode,那是因为假如我们存取数据时 是存放在键值对中时(比如Map),这时候光靠equals效率不高,这时候用对象的哈希码(即hashCode方法得到的)来查找和比较更快,所以一般重写equals方法必须重写hashCode方法,因为java规定相等的对象必须有相等的哈希码。