软件构造复习3

编程语言的数据类型与类型检查
博客介绍了基本数据类型和对象数据类型,前者如int等小写类型,后者如String等大写类型。还阐述了静态和动态类型检查,前者在编译阶段,后者在运行阶段。此外,讲解了Mutable/Immutable,介绍了不变和可变数据类型的特点、优缺点及常见类型。

1.基本数据类型、对象数据类型

1)基本数据类型:int,long,boolean,double,char ⇒小写
2)对象数据类型:String,BigInteger⇒大写

基本数据类型对象数据类型
没有ID,只有值既有ID,又有值
在栈中分配内存在堆中分配内存
不可变有些可变,有些不可变
代价低代价昂贵

对象形成继承的层次关系,继承树根节点为Object

2.静态类型检查和动态类型检查

⇒静态类型语言:在编译阶段进行类型检查
⇒动态类型语言:在运行阶段进行类型检查
⇒静态类型检查:在程序运行前自动发现bug,在编译时发现问题
⇒动态类型检查:在程序运行时自动发现bug
⇒无检查:不进行检查,自己对自己代码负责
⇒静态类型检查的范围:(“类型相关”)
1)语法错误
2)类名/函数名错误
3)参数数目错误
4)参数类型错误
5)参数返回值类型错误
⇒动态类型检查:(”值相关“)
1)非法的参数值(如除零错误)
2)非法的返回值
3)越界(数组)
4)空指针

3.Mutable/Immutable

⇒改变一个变量:将该变量指向另一个存储空间
⇒改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新值
⇒Immutability不变性
⇒不变数据类型:一旦被创建,其值不能被改变
⇒引用类型:也可以是不变的,一旦确定其指向对象,不能再被改变
⇒final关键字:若Java编译器不能确定final不变量不会改变,就提示错误,这也是静态检查的一部分
⇒final类:无法再产生子类
⇒final变量:无法改变值/引用
⇒final方法:无法被子类重写
⇒可变对象:拥有方法可以修改自己的值/引用
⇒不变对象:一旦被创建,始终指向同一个值/引用
⇒String:不可变类型

⇒StringBuilder:可变类型
⇒有删除/添加/替换方法–修改自己

⇒可变类型的优点
1)使用不可变类型,对其频繁修改会产生大量的临时拷贝
2)可变类型可以最小化拷贝以提高效率
3)可以获得更好的性能
4)适合于在多个模块之间共享数据
⇒不可变类型更安全,更好理解,对改变的支持也更好
⇒常见可变类型:StringBuilder,Date,List<>
⇒常见不可变类型: LocalDateTime,Instant,基本类型及其封装类型
unmodifiableList;unmodifiableSet;unmodifiableMap:不可改变,只能看
⇒它们接收一个List/Set/Map包装为一个不可变List
⇒这种不可变是在运行时获得的,而非编译时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值