数据类型与类型检查
{
静
态
类
型
检
查
:
语
法
错
误
(
类
名
,
函
数
名
,
参
数
的
数
目
/
类
型
,
返
回
值
)
动
态
类
型
检
查
:
非
法
参
数
,
非
法
返
回
值
,
n
u
l
l
,
数
组
越
界
\left\{ \begin{array}{c} 静态类型检查:语法错误(类名,函数名,参数的数目/类型,返回值) \\ 动态类型检查:非法参数,非法返回值,null,数组越界\end{array}\right.
{静态类型检查:语法错误(类名,函数名,参数的数目/类型,返回值)动态类型检查:非法参数,非法返回值,null,数组越界
{
基
本
数
据
类
型
:
i
n
t
,
l
o
n
g
,
b
o
o
l
e
a
n
,
c
h
a
r
,
b
y
t
e
,
s
h
o
r
t
,
f
l
o
a
t
对
象
数
据
类
型
:
S
t
r
i
n
g
,
B
i
g
I
n
t
e
g
a
r
,
基
本
数
据
类
型
的
包
装
(
I
n
t
e
g
e
r
,
B
o
o
l
e
a
n
…
…
)
\left\{ \begin{array}{c} 基本数据类型:int,long,boolean,char,byte,short,float\\ 对象数据类型:String,BigIntegar,基本数据类型的包装(Integer,Boolean……)\end{array}\right.
{基本数据类型:int,long,boolean,char,byte,short,float对象数据类型:String,BigIntegar,基本数据类型的包装(Integer,Boolean……)
重载overload:操作名称一样,输入参数不同
{
静
态
类
型
语
言
:
编
译
时
检
查
动
态
类
型
语
言
:
运
行
时
检
查
\left\{ \begin{array}{c} 静态类型语言:编译时检查 \\ 动态类型语言:运行时检查\end{array}\right.
{静态类型语言:编译时检查动态类型语言:运行时检查
immutable与mutable
{
可
变
数
据
类
型
:
S
t
r
i
n
g
B
u
i
l
d
e
r
,
D
a
t
e
,
数
组
不
可
变
数
据
类
型
:
S
t
r
i
n
g
,
基
本
数
据
类
型
与
它
们
的
封
装
\left\{ \begin{array}{c} 可变数据类型:StringBuilder,Date,数组 \\ 不可变数据类型:String,基本数据类型与它们的封装\end{array}\right.
{可变数据类型:StringBuilder,Date,数组不可变数据类型:String,基本数据类型与它们的封装
不可变数据类型:
- 指向的空间所存的数据不可改变
- 关键字final:指向的地址不再改变
- 问题:垃圾回收
可变数据结构:
4. 防御使拷贝:return new
迭代器:Iterator
介绍:List,Set,Map
可变→不可变:Collections.unmodifiableList/Set/Map
注:只能看和读,可以改变封装之前的值改变它的值
spec
spec:
{
输
入
输
出
,
数
据
类
型
功
能
和
正
确
性
性
能
\left\{ \begin{array}{c} 输入输出,数据类型 \\ 功能和正确性\\ 性能\end{array}\right.
⎩⎨⎧输入输出,数据类型功能和正确性性能
行为等价:基于spec的,再某一soec条件下,效果一样
spec:
{
前
置
条
件
:
p
e
r
c
o
n
d
i
t
i
o
n
(
@
p
a
r
a
m
)
后
置
条
件
:
p
o
s
t
c
o
n
d
i
t
i
o
n
(
@
r
e
t
u
r
n
,
@
t
h
r
o
w
s
)
\left\{ \begin{array}{c} 前置条件:percondition(@param) \\ 后置条件:postcondition(@return,@throws)\end{array}\right.
{前置条件:percondition(@param)后置条件:postcondition(@return,@throws)
fail fast
spec强度,强于S2>S1同时满足以下条件(其中一个相同):
- S2的前置条件更弱
- 在S1的前置条件下,S2的后置条件更强
此时S2可以替代S1(用户喜欢强的,程序员喜欢弱的,强的图更小)
ADT
{
构
造
器
(
C
r
e
a
t
o
r
s
)
:
从
无
到
有
生
产
器
(
P
r
o
d
u
c
e
r
s
)
:
根
据
旧
的
返
回
新
的
观
察
器
(
O
b
s
e
r
v
e
r
s
)
:
返
回
参
数
变
值
器
(
M
u
t
a
t
o
r
s
)
:
只
有
m
u
t
a
b
l
e
才
有
,
唯
一
可
以
是
v
o
i
d
的
,
更
改
数
据
\left\{ \begin{array}{c} 构造器(Creators):从无到有\\ 生产器(Producers):根据旧的返回新的\\ 观察器(Observers):返回参数\\ 变值器(Mutators):只有mutable才有,唯一可以是void的,更改数据\end{array}\right.
⎩⎪⎪⎨⎪⎪⎧构造器(Creators):从无到有生产器(Producers):根据旧的返回新的观察器(Observers):返回参数变值器(Mutators):只有mutable才有,唯一可以是void的,更改数据
表示独立性:内部的参数独立