java中的相等比较

1、java.lang.Object类中有两个非常重要的方法:

    public boolean equals(Object obj) {
        return (this == obj);//比较引用是否相同
    }
    public native int hashCode();//本地方法

2、Object类是每一个类的父类。所有的对象,包括数组,都实现了在Object类中定义的方法;

3、String 、Math、Integer、Double等类重写了object类的equals()方法,做值比较;

4、基本类型在栈上,本身进行值的比较;

5、equals()方法特性:

(1)自反性(reflexive):x不为null,x.equals(x)一定是true;

(2)对称性(symmetric):x、y不为null,当且仅当x.equals(y)是true时,y.equals(x)也是true;

(3)传递性(transitive):x、y、z、不为null,两两equals均为true;

(4)一致性(consistent):x、y不为null,对象信息没修改,多次调用equals()返回结果要一致;

(5)x不为null,x.equals(null)返回false;

6、hashCode()方法特性:

(1)equals()被override时,hashCode()也要被override;

(2)equals()没有改变,多次调用hashCode()得到的Integer也相等;

(3)equals()相等,hashCode()必相等;

(4)hashCode()相等,equals()未必等;

7、hashCode()在集合(Collection)中的作用:

(1)Java中的集合(Collection)有两类,一类是List,一类是;

(2)集合查找时,hashcode能大大降低对象比较次数,提高查找效率;

(3)StringBuffer等类的对象存储进集合类中会出现问题,没有重写equals和hashCode;

(4)HashMap、HashSet、HashTable而言,异常重要,用于寻址;

(5)容器类型程序设计语言,都会带hashCode,主要作用是为了配合基于散列的集合;

 

转载于:https://my.oschina.net/u/3847203/blog/1809771

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值