软件构造 第三章第一节 数据类型与类型检查

第三章第一节 数据类型与类型检查

1.数据类型

-基本数据类型

-对象数据类型

Boxed primitives

– Boolean, Integer, Short, Long, Character, Float, Double

一般可以自动转换

 

2.类型检查

-静态类型检查:关于"值"的检查

    Syntax errors 语法错误

Wrong names 类名/函数名错误

Wrong number of arguments 参数数目错误

Wrong argument types 参数类型错误

Wrong return types 返回值类型错误,

-动态类型检查:关于"类型"的检查

    Illegal argument values 非法的参数值

Unrepresentable return values 非法的返回值

Out-of-range indexes 越界

Calling a method on a null object reference.

3.可变性与不可变性

改变一个变量:将该变量指向另一个值的存储空间

改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值。

 

final类无法派生子类

final变量无法改变值/引用

final方法无法被子类重写

 

不变对象:一旦被创建,始终指向同一个值/引用

可变对象:拥有方法可以修改自己的值/引用

 

-可变数据类型最小化的拷贝以提高效率;使用 不可变类型,对其频繁修改会产生大量的临时拷贝 (需要垃圾回收 )

-可变数据类型,可获得更好的效能;

-可变数据类型也适合在多个模块之间共享数据;

-不可变数据类型更安全,更易于理解,也更方便改变

 

-防御性拷贝

如果一个方法或构造函数允许可变对象进/出,那么就要考虑一下使用者是否有可能改变它。如果是的话,那你必须对该对象进行保护性拷贝,使进入方法内部的对象是外部时的拷贝而不它本身(因为外部的对象有可能还会被改变)。

 

4.快照图(Snapshot diagram)

基本类型的值:原始值由裸露的常量表示。传入箭头引用变量或对象字段的值

对象类型的值:一个对象值是一个由它的类型标记的圆。当我们想要显示更多的细节时,我们在它里面写字段名称,箭头指向他们的值。 

不可变对象:用双线椭圆。

不可变的引用:用双线箭头

注意:

引用时不可变的,但指向的值可以是可变的

可变的引用,也可指向不可变的值

posted @ 2018-06-22 16:37  masteryellow  阅读(151)  评论(0编辑  收藏  举报