前言
数组:是一种用于存储多个相同类型数据的存储模型(可理解为容器)
一、数组的定义?
1.初始化
为数组中的数组元素分配内存空间,并为每个元素赋值
1.静态初始化:初始化时指定每一个数组元素的初始值。
数组是引用数据类型,存储的数组在内存中的地址信息。
***数组元素访问***
1. 数组变量访问方式: 格式:数组名
2. 数组内部保存的数据的访问方式: 格式:数组名[索引]
3. 获取数组长度: 格式:数组名.length(结果是元素个数)
4. 获取数组的最大索引 格式: 数组名. length–1 (前提:元素个数大于 0)
数组注意事项:
- “数据类型[] 数组名”也可以写成 “数据类型 数组名[] ”
- 什么类型的数组存放什么类型的数据,否则报错。
- 数组一旦定义出来,程序执行的过程中,长度、类型就固定了。
2.动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
***两种数组定义时的特点和场景区别***
1. 当前已经知道存入的元素值,用静态初始化。
2.当前还不清楚要存入哪些数据,用动态初始化。
二、数组遍历
就是一个一个的访问数据
对于IDEA可使用快捷键:数组名.fori ------- “ages.fori”
三、数组Demo
1.数组遍历-求和:
2.数组求最值:
3.猜数字游戏
4.随机排名
5.数组排序–冒泡排序
定义一个外部循环控制总共需要冒几轮(数组的长度-1)
定义一个内部循环,控制每轮依次往后比较几个位置(数组长度-i-1)。
如果当前位置的元素值>后一个位置的元素值,两者交换。
三、数组内存图
数组初始化时,会为存储空间添加默认值 整数:0 浮点型0.0 布尔false
字符:空字符 引用数据类型:null
每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
四、数组操作常见问题
- 索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题
- 空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常
- null:空值,引用数据类型的默认值,表示不指向任何有效对象