软构学习-4-数据类型与类型检验

4 数据类型与类型检验

章节大纲:

  • 静态/动态类型检查
  • 可变/不可变数据类型
  • 可变数据类型的危险性
  • 不可变数据类型的优越性
  • 用 Snapshot 图理解数据类型
  • 用集合类表达复杂数据类型

Java中的数据类型

  • 基本数据类型
    如int、long、byte、short、char、float,double、boolean,都是不可变得数据类型
  • 对象数据类型
    如Classes、interfaces。arrays、enums、annotations,其中一些是可变的,一些是不可变的。

各种关系:

  • 继承(extends)
  • 重载

静态/动态数据类型检查

  • 静态数据类型检查
    发生在编译阶段
    包括:
  • 语法错误
  • 类名/函数名错误
  • 参数数目错误
  • 参数类型错误
  • 返回值类型错误
  • 动态数据类型检查
    发生在运行阶段
    包括:
  • 非法的参数值
  • 非法的返回值
  • 越界
  • 空指针

可变与不可变

改变一个变量和改变一个变量的值的区别:

  • 改变一个变量:
    将该变量指向另一个值的存储空间
  • 改变一个变量的值:
    将该变量当前指向的值的存储空间中写入一个新的值。

常见的不可变类型:

  • String

常见的可变数据类型:

  • StringBuilder

优劣:

  • 不可变数据类型:
    • (劣)在频繁修改时会产生大量不必要的拷贝以导致空间的浪费。
    • (优)更加安全
  • 可变数据类型
    • 与不可变数据类型相反

提高安全性的方法:

  • 防御式编程

Snapshot Diagram

基本数据类型和对象数据类型的表示区别:

可变/不可变数据类型的可变引用:

不可变的应用是双重箭头

posted @ 2023-05-20 11:41  No3eTB  阅读(15)  评论(0编辑  收藏  举报