Java中的数据类型
- 基本数据类型:
int、long、double、boolean、char
(全部是小写) - 对象数据类型:
String、BigInteger
(大写字母开头)
重载:
同样的操作名可以用于不同的类型
(变量不可以)
检查类型:
-
静态类型检查:
在编译阶段(执行前)进行检查
避免将错误带到运行阶段,提高正确性、健壮性
关于类型的检查,不考虑“值”
常见类型:
1)语法错误
2)类名、函数名错误
3)参数数目错误
4)参数类型错误
5)返回值类型错误 -
动态类型检查:在代码执行时进行检查
关于“值”的检查
常见类型
1)非法参数值
2)非法返回值
3)越界
4)空指针
可变与不可变
改变一个变量:将该变量指向另一个值的存储空间
改变一个变量的值:将改变量当前指向的值的存储空间中写入一个新的值
不变数据类型:一旦被创建,其值不能改变
不变引用类型:一旦确定其指向的对象,一直指向该对象,不会改变
可变类型:
- 减少拷贝以提高效率、更好的性能
- 适合多个模块之间共享数据
可变类型:
- 数据更安全,在其他质量指标上表现更好
规约的强度及替换
规约S1>=S2
如果S1的前置条件更弱、后置条件更强
则可以用S1替代S2
规约的种类
确定性规约:给定一个满足前置条件的输入,其输出唯一、明确
欠定的规约:同一个输入可以由多个输出
非确定的规约:同一个输入,多次执行时得到的结果可能不同
操作式规约:如伪代码
声明式规约:没有内部实现,只有初-终状态