HIT软构第四章数据类型与类型检验知识总结
- 静态/动态检查
- 静态在编译阶段进行检查,而动态在运行阶段进行检查
- 静态类型检查 >> 动态 >> 无检查
静态检查的类型: | 语法错误,函数名错误;函数参数类型或者数量错误;函数返回值类型错误 |
动态检查的类型: | 非法的参数值(分母为0);非法的返回值;数组越界;空指针 |
§ 静态检查往往是关于类型的,是独立于变量所具有的特定值的错误。
- 静态类型保证了一个变量将具有该集合中的某些值,但我们在运行时才知道它到底具有哪个值。
- 因此,如果错误只由某些值引起,比如除以0或索引超出范围,那么编译器就不会对此提出静态错误。
§ 相比之下,动态检查往往是关于由特定值引起的错误。
- 可变与不可变数据类型
- Java中两种数据类型:基本数据类型和对象数据类型
- 根据Java的惯例,基本数据类型类型是小写的,而对象类型则以大写字母开始
- 区别:
- Java中两种数据类型:基本数据类型和对象数据类型
基本数据类型 | 对象数据类型 |
常见的一些(略) | 类,接口,数组,枚举,注释 |
只有值没有ID | 既有值又有ID |
不可变 | 既有可变又有不可变 |
存在栈里 | 存在堆里 |
-
-
- 任何一个子类都是父类的一个特殊情况:父类能做的子类一定能做;可以把子类对象赋值给父类类型
- EX:string就是一个典型的不可变数据类型,画snapshot
-
- 用snapshot图理解数据类型
- 不可变数据类型是双圈;堆是圈;栈是方框
- 用集合类表达复杂数据类型
- 数组:a.length
- List:接口;成员必须是个obiect
- Set: 一个集合是一个无序的集合,由零个或多个唯一的对象组成。
- § 一个对象不能多次出现在一个集合中。要么它在,要么不在。
- s1.contains(e)测试该集合是否包含一个元素
- s1.containsAll(s2)测试s1是否⊇s2
- s1.removeAll(s2)将s2从s1中移除。
-
-
- § 集合是一个抽象的接口
-
-
-
Map: -
迭代器
-
-
- 111