软件构造学习笔记-第七周
本周只有一节课,内容较少。对于不可变类型的相等比较,需要重写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)。
软件构造学习笔记-第七周相关推荐
- 软件构造学习笔记-第八周
本周重点是Liskov可替换原则.它要求父类和子类的行为一致性,子类要有更强的不变量.更弱的前置条件.更强的后置条件.在该原则的要求下,每个子类都可以对父类进行替换.这在开发过程中会带来极大的便利,在 ...
- 软件构造学习笔记-第三周
本周介绍了软件开发的几种模型,并重点介绍了Git.Git是分布式版本控制系统,可以通过SSH key建立远程与本地的连接,通过Git Bash中的命令进行文件的上传和下载.对于这门课程,Git的主要作 ...
- 软件构造学习笔记-第十一周
本周的内容是,比较各个设计模式的区别和联系,并介绍了状态模式和备忘录模式,以及正则表达式.正则表达式用于对文本文件的处理.在实验3中有一项要求是对输入文本进行解析,构造航班.要求表达式不仅要读入合法数 ...
- 软件构造学习笔记-第六周
这周的重点是重载和重写.重载要求两方法的签名必须不同,而重写则要求两方法的签名必须相同.重载可以发生在同一个类中,也可以发生在父类和子类中:重写必须发生在父类和子类中.接口/抽象类不具有构造方法,只有 ...
- 软件构造学习笔记-第五周
本周讲了AF.RI.Safety from rep exposure.spec等概念.这些是辅助程序设计的重要部分,需要在代码中以注释的形式体现,可以显著提高代码可读性,明确设计的目的.必须要养成写的 ...
- 软件构造学习笔记-第十三周
本周内容较少,主要介绍了断言以及防御式编程.断言一般用于程序开发阶段,用以快速发现错误,而在程序正式版本中则较少使用断言.一般来说,程序员使用(输入)的数据可以使用断言检测合法性,而用户输入数据则采用 ...
- 软件调试学习笔记(七)—— 单步步入单步步过
软件调试学习笔记(七)-- 单步步入&单步步过 单步步入 设置单步异常 处理单步异常 实验1:单步异常的设置与处理 单步步过 实现思路 实验2:实现单步步过 单步步入 描述: 单步步入的实现依 ...
- 软件设计模式学习笔记(七)
软件设计模式学习笔记(七) 结构型模式 1. 组合模式 1.1 概述 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构.在树形结构中可以通过调用某个方法 ...
- 软件构造学习笔记-第九周、第十周
因为本周五开始五一假期,所以只有一节软件构造课.因为内容还属于创建模式.结构模式.行为模式.将该堂课的内容整合到本博客中.本周的重点是程序开发模式,在写代码之前首先充分考虑采用哪种模式更有利于开发.维 ...
最新文章
- 第一学期网络技术知识总汇
- Linux磁盘占用100%解决方法
- mysql自增id用完了_MySQL表自增id用完了该怎么办?
- Windows8 游戏开发教程-二、关于资源和工具
- 服务器文件绝对路径,服务器文件绝对路径
- php查看音频属性,PHP获取音频mp3文件时长或音频文件其它参数属性
- mysql.sock 文件解析
- 23岁的一无所有,其实是理所应当的
- 车辆销售系统用例_汽车销售管理系统UML建模分析.doc
- 【CV-Learning】线性分类器(SVM基础)
- 组装台式计算机的部件,组装台式电脑的配置清单
- opencv 颜色识别
- android仿多看阅读三屏滚动效果 -- 更改OnPageChangeListener
- js插件开发的一些感想和心得-引狼狼的蓝胖子
- 解决WPS公式上浮问题
- unity和android交互问题整理
- mac的rubywoo怎么读_迪奥999和mac ruby woo哪个更好看_有什么区别
- SQL注入漏洞测试(HTTP头注入)
- python大作业报告(爬虫 分析 可视化)_爬虫综合大作业——网易云音乐《Five Hours》爬虫可视化分析...
- Java培训后找工作可以拿到多少钱?
热门文章
- ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)
- php里面sql是什么意思,MySQL和SQL是什么?MySQL和SQL之间的区别有哪些
- 【ArcGIS遇上Python】Python使用栅格数据
- Dart语言精简入门介绍
- Android之解决AppBarLayout 下面一道阴影
- LeetCode之Merge Two Sorted Lists
- TotoiseSVN-小乌龟的使用方法总结
- node.js npm常用命令
- 截取指定字符前_VBA学习笔记35-1:字符串拆分与组合
- sqlyog怎么设置默认值_物联网卡三网APN设置