只要往前走,不嫌步子小。今天来复习数组知识。
1 数组定义
1.1 数组概念引入
案例分析(容器):
现在某班级学委需要统计本班学生的考试情况,如班级平均分、最高分、单人各科及格情况等。然而本班有40人,如果用普通的方法统计的话,需要在程序中声明40个变量来记录各个学生的成绩,然后进行操作,很明显能感觉到这样做很麻烦,而且错误率也很高(基数大)。
所以我们引入了数组的的概念,将数组作为一个容器,把所有数据全部存储到这个容器中,进行统一操作。
1.2 数组概述
数组就是用来存储固定长度数据的容器,确保多个数据的数据类型要一致。
数组Array,标志是[ ] ,用于储存多个相同类型数据的集合想要获取数组中的元素值,可以通过脚标(下标)来获取,数组下标是从0开始的,下标的最大值是数组的长度减1。
1.3 创建数组(初始化)
(声明:这里以 int 为整型数据类型,以 arr 为数组名来演示)
数组创建方式一般分为 动态初始化(指定长度) 和 静态初始化(指定内容) 两种。
方式一:动态初始化
- 说明:声明数组时指定元素个数,之后用时在进行赋值。
- 格式:
数组存储的数据类型[ ] 数组名字 = new 数组存储的数据类型[数组长度];
数组存储的数据类型 数组名字[ ] = new 数组存储的数据类型[数组长度];
- 举例:可以存储5个整数的数组,代码如下。
int[] arr = new int[5];
int arr[] = new int[5];
// 可以拆分定义
int[] arr;
arr = new int[5];
方式二:静态初始化
- 说明:声明数组名开辟空间,并且赋值
- 格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
- 举例:可以存储5个整数的数组,代码如下。
int[] arr = new int[]{1,2,3,4,5};
// 可以拆分定义
int[] arr;
arr = new int[]{1,2,3,4,5};
方式三:静态初始化省略格式
- 说明:声明数组名,并赋值
- 格式:
数据类型[] 数组名 = {元素1,元素2,元素3…};
- 举例:可以存储5个整数的数组,代码如下。
int[] arr = {1,2,3,4,5};
//注:这种方式 不支持拆分定义
1.4 创建数组过程分析
思考:程序创建数组 int[] a = new int[5]; 时发生了什么?
- 在内存中开辟连续的空间,用来存放数据,长度是5
- 给数组完成初始化过程,给每个元素赋予默认值,int类型默认值是0
- 数组完成初始化会分配一个唯一的地址值
- 把唯一的地址值交给引用类型的变量a去保存
数组名是个引用类型的变量,它保存着的是数组的地址,不是数组中的数据。
1.5 数组的长度
数组的长度用 length 属性来表示。
数组的长度允许为0,并且数组一旦创建,长度不可改变。
2. 数组的遍历
2.1 遍历
从头到尾,依次访问数组每一个位置,获取每一个位置的元素。
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
//数组下标从 0 开始,n-1 结束
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
}
以上的代码也可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,不仅写的麻烦而且看得也麻烦,所以这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。
2.2 for循环
开始:开始下标0 结束:结束下标length-1 如何变化:++
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
//遍历直到 length-1 结束
//所以 i<=arr.leng.th-1 或 i<arr.length 都可以
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
相信大家也知道,普通for循环有一点局限性,那就是使用时需要提前知道结束条件。这在没有明确的结束条件的时候,就让大家有点无从下手,所以就出现了 高效for循环。
2.3 foreach遍历方式
foreach遍历,又叫高效for循环 / 增强for循环。思想:从头到尾依次遍历,直到没有元素为止。
格式:for ( 数据类型 循环变量i : 需要遍历的数据 ){ 方法体 }
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i : arr) {
System.out.println(i);
}
}