哈工大软件构造数据类型和数据检验

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

2.静态类型语言:所有变量类型再编译前已知

动态类型语言:在运行阶段进行类型检查

静态类型检查:语法、类名/函数名、参数数目、参数类型、返回值类型

动态类型检查:非法的参数值、非法的返回值、越界、空指针

3.不可变数据类型(immutable):一旦创建,值不能改变

可变数据类型:值可以被改变;

注:final的特殊性:类无法被继承,方法无法被重写,变量引用不可变(指针不能改变)

4.Snapshot diagram 快照图:不可变引用用双线,不可变数据类型用双线椭圆

 注:不可变引用指向的值可能可变

 

可变的引用指向的值也可能不可变 

 

 5.Array and Collections
Iterator
mutable类型,有两种方法:next()和hasNext(),next()方法是mutate的

需要注意,当用Iterator迭代List中元素,涉及到remove时,由于remove后List内元素索引会发生改变,会出现错误。

 

 

Collections
基本类型及其封装对象类型都是immutable的

List、Map、ArrayList等都是mutable的

可以利用Collections类提供的方法将mutable类包装成immutable

Collections.unmodifiableList Collections.unmodifiableSet Collections.unmodifiableMap

这种包装器得到的结果是不可变的,只能看,不能修改(其实就是disabled了一些mutate方法或者让其抛出异常)

这种”不可变“是在运行阶段获得的,编译阶段无法对此进行静态检查
虽然不能用包装后的对象对其进行修改,但依旧能用包装前的对象进行修改
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值