本周只有一节课,内容较少。对于不可变类型的相等比较,需要重写equals和hashCode方法,实现观察等价性。对于可变类型,不建议重写以上两方法,按照默认比较方式(比较内存地址)即可。

可变类型的相等关系

1.Object类的equals方法检查的是行为等价性,即两个变量指向同一个对象时才相等。如StringBuilder类的equals方法。
2.所有不可变类都要重写equals方法,实现观察等价性。
对于可变类,直接继承Object类的hashCode和equals方法即可。
如果一定要判断两个可变对象看起来是否一致,最好定义一个新的方法。
3.clone方法创建对象的复制。
浅拷贝只复制引用,深拷贝创建新对象。
满足如下性质

自动封装和相等

1.基本数据类型存放在栈中,对象数据类型 存放在堆中。
2.
3.通过调用valueOf创建整形对象,如果范围是-128~127,则相同值只创建一个对象,拥有行为等价性。执行如下操作返回true

4.执行左侧的结果为false(因为明确声明要创建两个对象),右侧结果为true(同3)。

软件构造学习笔记-第七周相关推荐

  1. 软件构造学习笔记-第八周

    本周重点是Liskov可替换原则.它要求父类和子类的行为一致性,子类要有更强的不变量.更弱的前置条件.更强的后置条件.在该原则的要求下,每个子类都可以对父类进行替换.这在开发过程中会带来极大的便利,在 ...

  2. 软件构造学习笔记-第三周

    本周介绍了软件开发的几种模型,并重点介绍了Git.Git是分布式版本控制系统,可以通过SSH key建立远程与本地的连接,通过Git Bash中的命令进行文件的上传和下载.对于这门课程,Git的主要作 ...

  3. 软件构造学习笔记-第十一周

    本周的内容是,比较各个设计模式的区别和联系,并介绍了状态模式和备忘录模式,以及正则表达式.正则表达式用于对文本文件的处理.在实验3中有一项要求是对输入文本进行解析,构造航班.要求表达式不仅要读入合法数 ...

  4. 软件构造学习笔记-第六周

    这周的重点是重载和重写.重载要求两方法的签名必须不同,而重写则要求两方法的签名必须相同.重载可以发生在同一个类中,也可以发生在父类和子类中:重写必须发生在父类和子类中.接口/抽象类不具有构造方法,只有 ...

  5. 软件构造学习笔记-第五周

    本周讲了AF.RI.Safety from rep exposure.spec等概念.这些是辅助程序设计的重要部分,需要在代码中以注释的形式体现,可以显著提高代码可读性,明确设计的目的.必须要养成写的 ...

  6. 软件构造学习笔记-第十三周

    本周内容较少,主要介绍了断言以及防御式编程.断言一般用于程序开发阶段,用以快速发现错误,而在程序正式版本中则较少使用断言.一般来说,程序员使用(输入)的数据可以使用断言检测合法性,而用户输入数据则采用 ...

  7. 软件调试学习笔记(七)—— 单步步入单步步过

    软件调试学习笔记(七)-- 单步步入&单步步过 单步步入 设置单步异常 处理单步异常 实验1:单步异常的设置与处理 单步步过 实现思路 实验2:实现单步步过 单步步入 描述: 单步步入的实现依 ...

  8. 软件设计模式学习笔记(七)

    软件设计模式学习笔记(七) 结构型模式 1. 组合模式 1.1 概述 ​ 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构.在树形结构中可以通过调用某个方法 ...

  9. 软件构造学习笔记-第九周、第十周

    因为本周五开始五一假期,所以只有一节软件构造课.因为内容还属于创建模式.结构模式.行为模式.将该堂课的内容整合到本博客中.本周的重点是程序开发模式,在写代码之前首先充分考虑采用哪种模式更有利于开发.维 ...

最新文章

  1. 第一学期网络技术知识总汇
  2. Linux磁盘占用100%解决方法
  3. mysql自增id用完了_MySQL表自增id用完了该怎么办?
  4. Windows8 游戏开发教程-二、关于资源和工具
  5. 服务器文件绝对路径,服务器文件绝对路径
  6. php查看音频属性,PHP获取音频mp3文件时长或音频文件其它参数属性
  7. mysql.sock 文件解析
  8. 23岁的一无所有,其实是理所应当的
  9. 车辆销售系统用例_汽车销售管理系统UML建模分析.doc
  10. 【CV-Learning】线性分类器(SVM基础)
  11. 组装台式计算机的部件,组装台式电脑的配置清单
  12. opencv 颜色识别
  13. android仿多看阅读三屏滚动效果 -- 更改OnPageChangeListener
  14. js插件开发的一些感想和心得-引狼狼的蓝胖子
  15. 解决WPS公式上浮问题
  16. unity和android交互问题整理
  17. mac的rubywoo怎么读_迪奥999和mac ruby woo哪个更好看_有什么区别
  18. SQL注入漏洞测试(HTTP头注入)
  19. python大作业报告(爬虫 分析 可视化)_爬虫综合大作业——网易云音乐《Five Hours》爬虫可视化分析...
  20. Java培训后找工作可以拿到多少钱?

热门文章

  1. ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)
  2. php里面sql是什么意思,MySQL和SQL是什么?MySQL和SQL之间的区别有哪些
  3. 【ArcGIS遇上Python】Python使用栅格数据
  4. Dart语言精简入门介绍
  5. Android之解决AppBarLayout 下面一道阴影
  6. LeetCode之Merge Two Sorted Lists
  7. TotoiseSVN-小乌龟的使用方法总结
  8. node.js npm常用命令
  9. 截取指定字符前_VBA学习笔记35-1:字符串拆分与组合
  10. sqlyog怎么设置默认值_物联网卡三网APN设置