目录
1.前置知识
1.Java是静态类型检查语言。即在编码过程中即可通过编译检查是否含有类型错误,帮助程序员方便修改,不必在运行中才发现bug。
静态类型检查包括5类错误:
语法错误
类名/函数名错误
参数数目错误
参数类型错误
返回值类型错误
动态类型检查包括4种错误:
非法参数值
非法返回值
越界
空指针
2.Java数据类型包括基本数据类型和对象数据类型。
基本数据类型就是int,float,double,char等。
对象数据类型都是继承自Object基类型,包括基本类型包装类。
2.可变与不可变
1.不变性是程序设计的基本原则之一。
2.不可变类型:指变量创建之后始终指向同一个值或引用。
不可变数据类型:一旦创建后不可以改变其值。
不可变引用类型:创建后不可以改变指向的对象。
使用final来保证变量不可以改变:
final修饰的类型不可以派生子类;
final修饰的变量不可以改变其值或引用;
final修饰的方法不可以被子类重写。
3.可变类型:拥有自己的方法修改自己的值或引用。
4.
可变类型 | 不可变类型 | |
安全性 | 有多个引用时不安全,客户端和设计师可能产生冲突,有时会出现难以发现的bug | 安全 |
效率 | 高效,最少化拷贝 | 较低效,频繁修改会产生大量拷贝 |
共享 | 多模块可以共享数据 | 不可以共享数据 |
5.改进可变类型的使用使其更加安全:
采用防御式拷贝,给客户端返回全新的可变类型对象;
使用不可变类型;
安全使用可变类型,即保证可变对象只有一个引用,无共享。
3.SnapShot图
SnapShot图用描述程序运行时的内部状态,便于程序员之间交流,便于解释设计思路。
具体应用: