HIT软件构造期末复习第三章ADT+OOP3.1

HIT软件构造期末复习第三章ADT+OOP 3.1

3.1要考的概念很多

数据类型是一个集合,每个集合包含的是所有满足这个类型的值

基本数据类型(java)

(在栈中分配内存存储,数据不可变)
int
long
boolean
double
char

对象数据类型(java)

(在堆中分配内存存储,数据有的可变有的不可变)
构建的类:具有层次性(继承关系)

  • extends 对接口进行继承

静态类型检查:

编译阶段进行检查发现错误,对“类型”的检查(语法、类名/函数名、参数数目、参数类型、返回值类型),避免将错误带入运行阶段,提高程序正确性/健壮性

  • JAVA是静态检查语言

动态类型检查:

程序运行阶段进行检查发现错误,对“”的检查(非法的参数值、非法的返回值、越界、空指针

动态类型检查>>静态类型检查>>无检查

★Mutable/Immutable:

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

不变数据类型(Immutable):

创建后值不可改变,不包含任何改变属性的方法

  • 属性不能设置为public类型
  • 属性不能return出去
  • 字符串string是不可变的
  • 不可变类型更安全
  • LocalDateTime类型不可变

尽量使用**final变量**作为方法的输入参数、局部变量

  • final类无法派生子类
  • final变量无法改变值/引用(变量的指向)
  • final方法不能被子类重写
  • final限定的是引用不可改变

可变数据类型(mutable):

创建对象的值可以被改变

  • StringBuilder类型是可变的
  • 一个变量的改变会引起
    其他变量的改变
  • 可以最少化拷贝以提高效率(最大的好处)
  • 不推荐使用mutable类型对象
  • Date类型是可变的

防御式拷贝:

多个引用指向一个对象
使一个引用指向一个对象,但会造成大量内存浪费

★Snapshot diagram:

得会画图

  1. build-time/run-time
  2. moment/period
  3. code

描述程序运行时的内部状态

  • 便于程序员交流
  • 便于刻画各类变量随时间变化
  • 便于解释设计思路

画图

基本类型的值:
变量名+箭头+具体的值
变量名加箭头
对象类型的值:
用圆圈表示堆,(图三)对象的属性和对象一起放在堆里HIT软件构造期末复习第三章ADT+OOP3.1_第1张图片
示例:

immutable类型:

在这里插入图片描述
HIT软件构造期末复习第三章ADT+OOP3.1_第2张图片
上图中不可变对象:用双线椭圆

mutable类型:

在这里插入图片描述
HIT软件构造期末复习第三章ADT+OOP3.1_第3张图片
上图单线圈

不可变的引用:双线箭头
(id是mutable+final类型,指向区域不能改变,限定指向但不限定值,id如果是immutable+final类型,指向和值都不能改变)
HIT软件构造期末复习第三章ADT+OOP3.1_第4张图片
引用不可变,但指向的值可变
可变的引用,可指向不可变的值

你可能感兴趣的:(软件构造)