软构学习-4-数据类型与类型检验
4 数据类型与类型检验
章节大纲:
- 静态/动态类型检查
- 可变/不可变数据类型
- 可变数据类型的危险性
- 不可变数据类型的优越性
- 用 Snapshot 图理解数据类型
- 用集合类表达复杂数据类型
Java中的数据类型
- 基本数据类型
如int、long、byte、short、char、float,double、boolean,都是不可变得数据类型 - 对象数据类型
如Classes、interfaces。arrays、enums、annotations,其中一些是可变的,一些是不可变的。
各种关系:
- 继承(extends)
- 重载
静态/动态数据类型检查
- 静态数据类型检查
发生在编译阶段
包括: - 语法错误
- 类名/函数名错误
- 参数数目错误
- 参数类型错误
- 返回值类型错误
- 动态数据类型检查
发生在运行阶段
包括: - 非法的参数值
- 非法的返回值
- 越界
- 空指针
可变与不可变
改变一个变量和改变一个变量的值的区别:
- 改变一个变量:
将该变量指向另一个值的存储空间 - 改变一个变量的值:
将该变量当前指向的值的存储空间中写入一个新的值。
常见的不可变类型:
- String
常见的可变数据类型:
- StringBuilder
优劣:
- 不可变数据类型:
- (劣)在频繁修改时会产生大量不必要的拷贝以导致空间的浪费。
- (优)更加安全
- 可变数据类型
- 与不可变数据类型相反
提高安全性的方法:
- 防御式编程
Snapshot Diagram
基本数据类型和对象数据类型的表示区别:
可变/不可变数据类型的可变引用:
不可变的应用是双重箭头