ADT与OOP

第三章 ADT与OOP

3.1 数据类型与数据检查

3.1.1java的数据类型

java有基本数据类型(primitive types)和对象数据类型(object types),以小写开头的是基本的,大写开头的是对象的
二者的对比如下:
在这里插入图片描述

对于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的数据类型

对于二者区别有如下例子:
在这里插入图片描述
对于可变数据类型的优势有:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值