软件构造3.1 数据类型和类型检查
一、java中的数据类型
类型是一组值,以及可以对这些值执行的造作
数据类型
1、基本数据类型:在堆中 不可变
2、对象数据类型:在栈中
二、静态、动态数据类型检查
静态:编译阶段——与类型有关(语法错误、类名、函数名错误等,避免因错误类型的操作而导致的bug)(针对类型、与变量特定值无关的错误)
动态:运行阶段——与值有关(运行时才知道非法的参数、超出范围的索引值、调用空对象的方法)(针对由特定值引起的错误)
三、可变、不可变性
改变一个变量:将变量指向另一个存储空间
改变一个变量的值:将改变量空间写入一个新的值
Immutability:“final”——值不可变、引用不可变、类型不能被继承、方法不能override
对象 不可变(String)
对象 可变 (StringBuilder)
当有多个引用时
只用可变数据类型的风险
1、传递可变类型的参数(可能会改变其中的值,再次使用问题)
2、返回可变类型的数据(如果接受放进行修改,也许会影响到程序内部)
四、Arrays
1、Arrays(定长的数据类型)一但被创建,不可修改数组的长度
int[] a = new int[100];
迭代
2、List (长度可修改)
List<Integer> list = new ArrayList<Integer>();
ps.List是一个接口,List中的成员必须为对象
迭代
3、Set(是零个或多个惟一对象的无序集合)
Set<Integer> numbers = new Hashset<>();
set是一个抽象接口
4、Map
Map<key,value> map = new HashMap <key,value>
map是一个抽象接口