最近两堂课一共学习了静态和动态类型检查其中我做了以下总结:
1静态/动态类型检查
(Java是静态类型检查,在编译阶段进行检查,Java不进行动态类型检测)
静态类型检查:语法、类名/函数名、参数数目、参数类型、返回值类型
动态类型检查:非法的参数值、非法的返回值、越界、空指针
注意List<String>和List<Object>是在静态类型检测中报错。
课堂上老师带领我们做了几道例题,让我印象比较深刻。
2Mutable/Immutable
Java可进行自动垃圾回收。 Immutable好处:安全,但浪费空间。
*final特性: final 限定的是引用不变(如果mutable改变值不会报错),final类无法派生子类,final方法无法被子类重写。
使用Mutable可获得更好的性能,也适合多个模块间共享数据,但不够安全!
Date也是mutable类!避免使用!
可以使用java.time包中的其他immutable类型的类:LocalDateTime, Instant等
immutable拷贝时间 O(n2)
传参数尽量用immutable类型(保证参数不变性),如果传mutable参数可先进行defensive copying
必须通过类中的方法来改变类中的属性(防止信息泄露)
我认为这个是课程的重点,老师花了接近一节课的时间带领我们学习,这也是课程的难点,通过画图分析可以很好的解决。