软件构造第3章-ADT和OOP

ADT(Abstract Data Type) 抽象数据类型

OOP(Object-Oriented Programming) 面向对象的程序设计

数据类型

基本数据类型 对象数据类型
int, long, byte, short, char, float, double, boolean Classes, interfaces, arrays, enums, annotations
只有值,没有ID(与其他值无法区分) 既有值也有ID
不可变 可变
在栈中分配内存 在堆中分配内存
代价低 代价昂贵

基本数据类型的声明方式:

int a = 0;

对象数据类型的声明方式:

List<String> = new ArrayList<>();

将基本类型包装为对象类型:Integer,Double,Boolean,Long,Character,Float等,通常在定义集合类型的时候使用,除此之外一般要避免使用这些类型。

类型检查

静态类型检查:在编写代码时进行检查。能检查的错误有语法错误、类名/函数名错误、参数数目错误、参数类型错误、返回值类型错误等。是关于“类型”的检查。

动态类型检查:在代码运行时进行检查。能检查的错误有非法参数值、非法返回值、越界、空指针等。是关于“值”的检查。

无检查:从不检查。

可变和不可变

改变一个变量:将该变量指向另一个值的存储空间。

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

不变对象:一旦被创建,始终指向同一个值/引用。

可变对象:拥有方法可以修改自己的值/引用。

例如,String是不可变的,将"a"变成"ab",实际上是创建一个新的内容为"ab"的String;而StringBuilder是可变的,将"a"变成"ab",则是直接改变其值。

两者各有优缺点,使用可变类型,可获得更好的性能,但安全性欠佳;不可变类型在修改时会产生大量垃圾,可它更加安全。

Sanpshot Diagram 规则

1.基本类型的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值