目录
数组是什么
数组就是用来存储一批同种类型数据的内存区域(可以理解成容器)。
例子
假如用变量存储这些名字,然后完成随机点名功能,怎么实现?存在有什么问题?
我们会发现代码繁琐:大量变量的定义。 业务功能实现麻烦。
如果使用数组来完成,String[] names = {“张誉”, “刘疏桐”, “田启峰”,… “张学颖”, “李沁霖”, “陈侃”,};
结论:数组适合做一批同种类型数据的存储。
关于数组同学们需要学会什么
1.怎么定义数组存储数据
2.怎么操作数组元素
3.怎么解决实际问题
4.数组内存原理
5.数组使用的注意点
数组的定义
静态初始化数组
定义数组的时候直接给数组赋值。
静态初始化数组的格式:
数组的基本原理
例:int[] ages = {12, 24, 36};
注意:数组变量名中存储的是数组在内存中的地址,数组是引用类型。
数组的访问
数组名称[索引]
int[] arr = {12, 24, 36};
数组的长度属性:length
问题:数组的最大索引可以怎么表示?
数组的几个注意事项:
“数据类型[] 数组名”也可以写成 “数据类型 数组名[] ”。
什么类型的数组存放什么类型的数据,否则报错。
int[] arrs = new int[]{30, 40, "JAVA"};
数组一旦定义出来,程序执行的过程中,长度、类型就固定了。
数组的动态初始化
定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据。
动态初始化数组的元素默认值
元素默认值规则
两种初始化的的使用场景总结、注意事项说明:
动态初始化:只指定数组长度,后期赋值,适合开始知道数据的数量,但是不确定具体元素值的业务场景。
静态初始化:开始就存入元素值,适合一开始就能确定元素值的业务场景。
两种格式的写法是独立的,不可以混用。
数组遍历
遍历:就是一个一个数据的访问。
为什么要遍历? 搜索、数据统计等等都需要用到遍历。
Java内存分配、数组内存图
两个数组变量指向同一个数组对象
数组使用常见问题
问题1:如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutOfBoundsException(数组索引越界异常)
问题2:如果数组变量中没有存储数组的地址,而是null, 在访问数组信息时会出现NullPointerException(空指针异常)