ADT与OOP

第三章 ADT与OOP

3.1 数据类型与数据检查

3.1.1java的数据类型

java有基本数据类型(primitive types)和对象数据类型(object types),以小写开头的是基本的,大写开头的是对象的
二者的对比如下:
ADT与OOP_第1张图片

对于Object数据类型有如下特点:
  • Object类是所有类的基类,也就是所有类默认都继承了Object类
  • 子类是父类的一个实例,如 Student 和 Teacher 都可以设计为Person的子类
基本数据类型的包装类:
  • 将基本数据类型封装为对象
    如 Boolean, Integer, Short, Long, Character, Float, Double
  • 一般使用在容器里,除此之外尽量少用
  • 语言会自动进行转换

这里介绍一下重载的概念:相同的操作名称用于不同的数据类型,对于基本的运算符(±*/)Java已经进行过深度的地重载了。而对于其它的方法就相对低一些

3.1.2 动态与静态数据类型

首先Java是一个静态语言(运行时结构不可变的语言就是静态语言)在编译时需要知道所有变量的类型,编译器可以推断所有表达式的
类型

3.1.3可变与不可变

immutable
不变性是一种主要的设计原则
  • 不变数据类型创建完后,值不可修改
  • 不变引用,一旦指定引用位置,不可再次指
  • Final关键字对不可变引用提供了静态检查的支持

对于immutable的数据类型有:

  • A final class declaration means it cannot be inherited(不可继承继承)
  • A final variable means it always contains the same value/reference but cannot be changed(不可变更)
  • A final method means it cannot be overridden by subclasses(不可重载)

这里特别说明一下,String是一个immutable的数据类型,而StringBuilder是一个mutable的数据类型

对于二者区别有如下例子:
ADT与OOP_第2张图片
对于可变数据类型的优势有:

  • 开销更小
  • 易于共享
    其对应的缺陷有:
  • 不安全
  • 相对难以理解
  • 后续修改困难

你可能感兴趣的:(IT)