java笔记3

1、关于equals覆盖问题

覆盖,是为了表示逻辑相等,而不是引用指向的对象相同;

什么时候应该覆盖?

表示"值类",譬如Integer或者Date;

单例模式的类没必要覆盖。。。

equals方法的通用约定

①自反性x.equals(x)==true

②对称性y.equals(x)为true时,x.equals(y)也为true

③传递性x.equals(y)=true,y.equals(z)=ture,则z.equals(x)比为true

④一致性,多次调用x.equals(y)始终为true

equals覆盖时的告诫

①覆盖equals时总要覆盖hashCode

②不要企图让equals方法过分智能。。。

③不要讲equals声明中的Object类型转换为其他类型


2、覆盖hashCode

计算散列码的规则

①对于某个非0的常数,保存在int型变量中

②boolean类型,计算f?1:0;

③byte char int short 则计算(int)f

④long,计算(int)(f^(f>>>32))

⑤float,计算Float.floatToIntBits(f);

⑥double,Double.doubleToLongBits(f);

⑦对象的引用。。。不是很理解

⑧数组,每一个元素按照上面的规范进行处理,再进行组合

例如:int g  = 13;

    result = 31*result+g;


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值