软构随笔笔记(1)

随便记下来点 挑着汉化 没人看所以内容不是很严谨

【等价性equality】

请添加图片描述

  • hashcode是让不同的对象映射到不同的区,对于类似hashmap,hashset那种东西是必备的,但目前我还没重写过,我猜一般不涉及对hash什么东西的调用应该不用鸟他?
  • 它说不可变类型等价看AF(AF时表示空间到抽象空间的映射,这个用户不需要知道,就是我们写的抽象函数),可变类型等价看引用(我问了一牛人,引用差不多就是行为等价,行为等价差不多就是看是否指向一个内存位置)。

请添加图片描述

  • 对不可变类型,观察等价性和行为等价性是一样的,因为他们没有用以改变的方法。

请添加图片描述

  • 观察等价性就是调用他们的观察方法,比较返回值不出现区别就算,比较简单比较直接比较不负责任,够用就行。

请添加图片描述

  • 对可变类型判定等价只需要实现行为等价性。

请添加图片描述

  • 这是对hashcode比较具体的解释,我大概明白了一些,equal的对象一定要有相同的hashcode,但是不同的对象不一定hashcode非得不一样。

请添加图片描述

  • “==”(py里是is)一般用作引用等价,就是看比较对象是不是指向同一块内存区域,“equals()"是对象等价性,这个对象等价性应该在自己做ADT的时候定义好,重写一个合适的quals。

请添加图片描述

好习惯小tips

  • 不做修改方法
  • 不乱重写方法
  • 尽可能多地声明final和private
  • 可变部分时刻用checkrep掐着
  • toString,hashcode,equals,逢类必写(自制ADT类)(我不知道hashcode有咩有严格要求)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值