1.java中的数据类型
基本数据类型:诸如int,char这一类,它们都是immutable
对象数据类型:诸如Integer、String这一类,它们有些是immutable,有些是mutable。
2.类型检查:
静态类型检查和动态类型检查
3.final的作用:
(1)final类无法派生子类
(2)final变量无法改变值或引用
(3)final方法无法被子类override
4.可变对象的优点:
最小化拷贝以及节约空间。
解决immutable对象存在的潜在危险:防御性拷贝
5.集合的snapshot图:
6.ADT
(1)操作:
Creators构造器、Producers生产器、Obsevers观察器、Mutators变值器
(2)设计ADT:
设计一个好的ADT需要靠开发者的经验来设计它的操作的spec,设计一个ADT要遵循下面三个原则:(1)设计简洁一致的操作(2)要足以支持client所需要的对数据的所有操作,且用操作的难度要低(3)要么抽象要么具体,不要混合——要么针对抽象设计,要么针对具体应用的设计。
(3)表示独立性:
设计一个好的ADT需要靠开发者的经验来设计它的操作的spec,设计一个ADT要遵循下面三个原则:(1)设计简洁一致的操作(2)要足以支持client所需要的对数据的所有操作,且用操作的难度要低(3)要么抽象要么具体,不要混合——要么针对抽象设计,要么针对具体应用的设计。
(4)AF、RI、Safety from rep exposure
在代码中用注释的形式记录AF(如何解释每个R值)和RI(rep中哪些数据是有效的)。
在代码中用注释记录表示泄露的安全声明,证明代码并未对外泄露其内部表示。比如传入和传出都使用了防御式拷贝。