目录
一、数据类型
类型:基本数据类型、对象数据类型
对象形成层次结构——Java类单亲继承、C++类可多亲继承
重载:同样的操作名可用于不同的数据类型
二、检查
静态检查:java中所有变量的类型在编译时是已知的,因此编译器可以推断所有表达式的类型(在编译阶段进行类型检查);静态类型检查可以在编译阶段发现错误,避免将错误带入运行阶段,提高程序正确性/健壮性
动态检查:在运行时检查,主要检查值(非法参数值、非法返回值、越界、空指针
三、可变性与不可变性
赋值:将一个计算结果放到一个存储空间中,是一个存储过程
改变一个变量:将该变量指向另一个值的存储空间
改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新值
(尽可能避免变化,避免副作用)
不变性——重要设计原则
不变数据类型:一旦被创建,其值不能改变
(使参数为不变的——用关键字final声明)
final:final类无法派生子类、final变量无法改变值、final方法无法被子类重写
不变对象:一旦被创建,始终指向同一个值(String)
可变对象:拥有方法可以修改自己的值(StringBuilder)
使用不可变类型,对其频繁修改会产生大量的临时拷贝(需要垃圾回收)
但不可变类型更安全,在其他质量指标上表现更好
可变类型最少化拷贝以提高效率
使用可变数据类型可获得更好的性能,也适合在多个模块之间共享数据
安全使用可变类型:局部变量、不会涉及共享、只有一个引用
四、Snapshot diagram
用于描述程序运行时的内部状态,便于程序员之间的交流,用于刻画各变量随时间变化,便于解释设计思路
五、数组和集合
array、list、set、map