栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

软件构造学习笔记——ADT+OOP 第4-8讲,习题课2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

软件构造学习笔记——ADT+OOP 第4-8讲,习题课2

本部分重点考察大题

有以下考点

第四讲  基本数据类型、对象数据类型。

 

 静态/动态类型检查

java是静态类型语言

• 静态 类型语言:在编译阶段进行类型检查,所有变量的类型在编译期就已经确定 • 动态类型语言:在运行阶段进行类型检查,变量的类型在运行期才能确定

• 静态类型检查:可发现语法错误、类名 / 函数名错误、参数数目错误、参数类型错误、返回值类型错误
静态类型检查可在编译阶段发现错误,避免了将错误带入到运行阶段,可提高程序正确性 / 健壮性 • 动态 类型检查:可发现非法的参数值、非法的返回值、越界、空指针

静态类型检查是关于“类型”的检查,不考虑值;动态检查是关于“值”的检查。
Java 是一种静态类型语言,它同时具有静态类型检查和动态类型检查。

静态检查 >> 动态动态 >> 无检查

 Mutable/Immutable

不变数据类型(immutable type):一旦被创建,其值不能改变
引用不变:一旦确定其指向的对象,不能再被改变(但其值是可能变化的)

对于不可变类型,频繁对其运算会产生大量的临时拷贝,可变类型能最少化拷贝以提高效率。因此,使用可变数据类型,可获得更好的性能,也适合于在多个模块之间共享数据。

而不可变类型更“安全”, 在其他质量指标上表现更好。例如,向任何方法传入不可变类型的值,不用担心其值被意外修改;多线程可以安全地持有同一个不可变类型的引用,而不用担心竞争。

 值的改变、引用的改变、final

改变一个变量:将该变量指向另一个值的存储空间
改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值

Java 中的 final 关键字

• final 类无法派生子类 • final 方法无法被子类重写

       •final 变量无法改变其引用(而非值)

 防御式拷贝

通过防御式拷贝,给客户端返回一个全新的Date对象

大部分时候该拷贝不会被客户端修改, 可能造成大量的内存浪费

如果使用不可变类型, 则节省了频繁复制的代价

不可变类型 不需要防御式拷贝

//保护可变类型的另一种方法

• 单引用局部变量:把对 mutable 对象的引用限制在类 / 方法内,不对外暴露
如果存在多个引用,使用可变类型就非常不安全  Snapshot diagram

 不可变对象:用双线 椭圆

//

 

迭代器是一个可变数据类型,它拥有两个方法:mutator 方法 next() 返回容器的下一个数据;observer 方法 hasNext() 返回容器是否还有下一个数据。

 

 

a code-level, run-time, and moment view

//

 第五讲  Specification、前置/后置条件

 行为等价性

 规约的强度

 ADT操作的四种类型

 表示独立性、表示泄露

 不变量、表示不变量RI

 表示空间、抽象空间、AF

 以注释的形式撰写AF、RI

 接口、抽象类、具体类

 继承、override

 多态、overload

 泛型

 等价性equals()和==

 equals()的自反、传递、对称

 hashCode()

 不可变对象的引用等价性、对象等价性

 可变对象的观察等价性、行为等价性

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/967313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号