哈工大软件构造复习2(4,5章)
4 Data Type and Type Checking
数据类型与类型检验
基本数据类型:int,long,boolean,double,char,float
只有值,没有ID,不可变,且在栈中分配内存
对象数据类型:Classes, interfaces, arrays, enums,annotations
分别为类,接口,数组,枚举,附注
既有ID也有数值,可能可变也可能不可变,在堆中分配了内存
我们可以将基本类型包装为对象类型
Boolean, Integer, Short, Long, Character, Float, Double
类型检查:静态类型检查 > 动态类型检查 > 无检查
静态类型检查:在编译过程进行检查,可以提高程序正确性/健壮性
动态类型检查:在运行过程中进行检查
答案B,final和Stringbuilder在ppt中有例子错误,D参数类别不一致,String不可变
静态检查错误有:语法,参数类别和数目,函数名,返回值类别等
动态检查错误有:非法参数值,非法返回值,越界和空指针等。
静态类型检查是对“类”的检查,而动态类型检查是对值的检查
不变对象:被创建始终指向同一个值或者引用
可变对象:有方法来改变自己的值
eg:String不可变,StringBuilder可变,当修改其定义的参数时,前者创建一个新的对象,后者直接修改值
可变类型有利于提高代码效率,不可变类型相对更加的安全、
final:作为输入参数,作为局部变量,它无派生子类,无法改变值和引用,无法被子类重写
5 Designing Specification
规约设计
spec:
规约限制有:功能描述、输入数据限制、返回值
前置条件,关键词requires 后置条件,关键词effects
前置条件是对客户端的约束,在使用方法时必须满足的条件;后置条件是对开发者的约束,方法结束时必须满足的条件
行为等价性:在用户角度看是否等价
规约的强度:
判断可以用一个规约替换另外一个需要满足两个条件:
1)前置条件更弱
2)后置条件更强
Java中的静态类型声明是一种规约,可据此进行静态类型检查static checking
方法前的注释也是一种规约,需要人工判定其是否满足
前置条件在 @param中,后置条件在 @return和@throws中

浙公网安备 33010602011771号