知识点:
- 静态类型检测/动态类型检测
- 可变性/不可变性
- Snapshot diagram
静态类型检测/动态类型检测
静态类型检测:
- 语法错误
- 类名/函数名错误
- 参数数目错误
- 参数类型错误
- 返回值类型错误
动态类型错误:
- 非法的参数值
- 非法的返回值
- 越界
- 空指针
动态类型检测>静态
//动态类型检测比静态类型检测更加严格,
静态类型:关于类型
编译阶段的检测,主要是代码语法方面的错误,代码的正确性
动态类型:关于值
运行时的报错,代码正确的前提下的用法错误,程序的正确性
考试重点:静态类型与动态类型检测的对比区分。
可变性/不可变性——程序的安全性
限定词:final
final的类无法被继承,
final的方法无法被重写
final的变量的值无法被改变 (应用)
不可变类型设计:不能用任何方法改变类中属性的值!
- 当需要对变量进行频繁修改时,不可变类型需要进行大量的拷贝,使用可变类型能够提高效率。
- 多个变量指向同一个数据时,其中一个变量的对数据值进行修改时,使用不可变类型不会影响到另一个变量。如果使用可变类型 会造成十分严重且难以察觉的错误!!!
考试重点:将可变的类改为不可变的类!
Snapshot diagram——程序运行时的内部状态
三维视图:run time/code/moment
值在栈上:(基本类型)
值在堆上:(对象类型)
- 引用保存在栈中*
- 不可变对象 —使用双线椭圆
- 不可变引用—双线箭头