案例
案例1
一个人最多拿10瓶啤酒,那么如何拿20瓶啤酒?
案例2
一个班级的学生有30人,如何用变量表示这30人的数学成绩?用30个变量吗?
应该使用数组,数组的作用相当于上面的啤酒箱,可以装入30人的数学成绩
int lilei=80;
int hanmeimei=87;
.........
int lucy=85;
数组
数组就是:集合,存储相同类型的数据,按一定的 顺序排列,且存储的数量是固定的
总结:
- 同类型
- 有序
- 长度固定
- 引用类型
声明数组变量
方式一
数据类型[] 数组名字;
解释:
- 数据类型: 创建的数组可以存储什么数据类型。
- [] : 表示数组
- 数组名字: 满足标识符规范,可以使用名字操作数组。
方式二(不推荐)
数据类型 数组名字[];
这种风格是来自 C/C++ 语言 ,Java采用是为了让 C/C++ 程序员能够快速理解java语言。
静态初始化
方式一
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
或者
数据类型[] 数组名;
数组名 = new 数据类型[]{元素1,元素2,元素3...};
解释:
- new:关键字,创建数组使用的关键字。
例子:
定义存储1,2,3,4,5整数的数组容器。
int[] arr = new int[]{1,2,3,4,5};
int[] array4;
array4=new int[]{85,80,92,83};
方式二
数据类型[] 数组名 = {元素1,元素2,元素3...};
例子:
定义存储1,2,3,4,5整数的数组容器
int[] arr = {1,2,3,4,5};
动态初始化
格式
数据类型[] 数组名字 = new 数据类型[长度];
或者
数据类型[] 数组名字;
数组名字 = new 数据类型[长度];
解释:
new:关键字,创建数组使用的关键字。
[长度]:数组的长度,表示数组容器中可以存储多少个元素。
注意: 数组长度一旦指定,不可更改。
例子:
定义可以存储3个int型的数组
int[] arr = new int[3];
或
int arr[] = new int[3];
这种写法不推荐
默认初始化
创建数组后,java就会对每个元素进行 初始化 :
- 整型数组:数组每个元素的值都为 0
- 浮点型数组:每个元素的值都为 0.0
- 字符型数组:每个元素的值都为
'',ASCII码中0位置的字符,即空字符 - 布尔型数组:每个元素的值都为false
数组的操作
索引
相当于 编号 ,数组中的每一个元素,都会有一个编号,从0开始
注意: 索引从0开始
数组的访问
初始化数组后,通过 索引 访问
格式:
数组名[索引]
例子:
查看动态初始化数组的元素值:
int arr[] = new int[3];
System.out.println(arr[0]);
执行结果为:0
int arr[] = new int[]{1,2,3};
System.out.println(arr[0]);
数组的修改
通过索引修改
格式:
数组名[索引]=值;
例子:
int arr[]=new int[3];
arr[0]=10;
arr[1]=20;
arr[2]=30;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
数组的长度属性
数组都有长度,而且是固定的,通过 数组名.length获取,int类型。由次可以推断出
数组的最大索引:数组名.length-1
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5};
//打印数组的属性,输出结果是5
System.out.println(arr.length);
}
数组遍历【重点】
就是将数组中的每个元素获取出来,需要配合 循环语句
int[] arr = { 1, 2, 3, 4, 5 };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
练习
找出最大值
从数组的所有元素中找出最大值。
实现思路:
- 定义变量,保存数组0索引上的元素
- 遍历数组,获取出数组中的每个元素
- 将遍历到的元素和保存数组0索引上值的变量进行比较
- 如果数组元素的值大于了变量的值,变量记录住新的值
- 数组循环遍历结束,变量保存的就是数组中的最大值
int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
int max = arr[0];
//遍历数组,取出每个元素
for (int i = 0; i < arr.length; i++) {
//遍历到的元素和变量max比较
//如果数组元素大于max
if (arr[i] > max) {
//max记录住大值
max = arr[i];
}
}
System.out.println("数组最大值是: " + max);
数组的反转
数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1
实现思想:数组最远端的元素互换位置。
- 实现反转,就需要将数组最远端元素位置交换
- 定义两个变量,保存数组的最小索引和最大索引
- 两个索引上的元素交换位置
- 最小索引++,最大索引—,再次交换位置
- 最小索引超过了最大索引,数组反转操作结束
int[] arr = {1, 2, 3, 4, 5};
/*
循环中定义变量min=0最小索引 max=arr.length‐1最大索引 min++,max‐‐
*/
for (int start = 0, last = arr.length - 1; start <= last; start++, last--) {
//利用第三方变量完成数组中的元素交换
int temp = arr[start];
arr[start] = arr[last];
arr[last] = temp;
}
// 反转后,遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
