哈工大软件构造复习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中

 

 
posted @ 2022-06-13 16:40  feeling123  阅读(28)  评论(0)    收藏  举报