数据类型与类型检查
{静态类型检查:语法错误(类名,函数名,参数的数目/类型,返回值)动态类型检查:非法参数,非法返回值,null,数组越界
{基本数据类型:int,long,boolean,char,byte,short,float对象数据类型:String,BigIntegar,基本数据类型的包装(Integer,Boolean……)

重载overload:操作名称一样,输入参数不同
{静态类型语言:编译时检查动态类型语言:运行时检查
immutable与mutable
{可变数据类型:StringBuilder,Date,数组不可变数据类型:String,基本数据类型与它们的封装
不可变数据类型:
- 指向的空间所存的数据不可改变
- 关键字final:指向的地址不再改变
- 问题:垃圾回收
可变数据结构:
4. 防御使拷贝:return new
迭代器:Iterator
介绍:List,Set,Map
可变→不可变:Collections.unmodifiableList/Set/Map
注:只能看和读,可以改变封装之前的值改变它的值
spec
spec:
⎩⎨⎧输入输出,数据类型功能和正确性性能
行为等价:基于spec的,再某一soec条件下,效果一样
spec:
{前置条件:percondition(@param)后置条件:postcondition(@return,@throws)
fail fast
spec强度,强于S2>S1同时满足以下条件(其中一个相同):
- S2的前置条件更弱
- 在S1的前置条件下,S2的后置条件更强
此时S2可以替代S1(用户喜欢强的,程序员喜欢弱的,强的图更小)
ADT
⎩⎪⎪⎨⎪⎪⎧构造器(Creators):从无到有生产器(Producers):根据旧的返回新的观察器(Observers):返回参数变值器(Mutators):只有mutable才有,唯一可以是void的,更改数据
表示独立性:内部的参数独立