软件构造学习笔记——数据类型与类型检验

数据类型

基本数据类型:只有值,没有ID (与其他值无法区分) 在栈中分配内存 代价低        不可变

int,long,boolean,double,char

对象数据类型:既有ID,也有值 在堆中分配内存 代价昂贵        可变\不可变

String,BigInteger

对象类型形成层次结构:继承关系(extends)

重载

同样的操作名可用于不同 的数据类型

类型转换

int a = 2; // a = 2

double a = 2; // a = 2.0 (Implicit)

int a = (int) 18.7; // a = 18 double

a = (double)2/3; // a = 0.6666…

Mutability与Immutability

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

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

Immutability 不变性

不变性:重要设计原则

不变数据类型:一旦被创建,其值不能改变

如果是引用类型,也可以是不变的:一旦确定其指向的对象,不能再被改变

final:final类无法派生子类 final变量无法改变值/引用 final方法无法被子类重写

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

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

String是不可变的

StringBuilder是可变的

使用 不可变类型,对其频繁修改会产生大量的临时拷贝(需要垃圾回收),不可变类型更“安全”, 在其他质量指标上表现更好

可变类型最少化拷贝以提高效率,使用可变数据类型,可获得更好的性能

Snapshot

用于描述程序运行时的内部状态,便于程序员之间的交流,刻画各类变量随时间变化,解释设计思路

基本类型的值

对象类型的值

不可变对象:用双线椭圆

不可变的引用:用双线箭头

引用是不可变的,但指向的值却可以是可变的,可变的引用,也可指向不可变的值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值