一. 数组的概念(重点)
数组是一种容器,可以同时存放多个数据值
1. 如何定义数组
(1) 动态初始化
数据类型[] 数组名 = new 数据类型[长度];// 必须制定长度, 长度是固定的.// 等号左右的数据类型必须是相同的解析含义: 左侧数据类型:也就是数组当中保存的数据,全都是统一的什么类型 左侧的中括号:代表我是一个数组 左侧数组名称:给数组取一个名字 右侧的new:代表创建数组的动作 右侧数据类型:必须和左边的数据类型保持一致 右侧中括号的长度:也就是数组当中,到底可以保存多少个数据,是一个int数字
适用于只知道数组的长度, 还不知道内容, 具体的内容, 下面再赋值
(2) 静态初始化
数据类型[] 数组名 = new 数据类型[] {元素1, 元素2, 元素3 ...};//注意:中括号中不要写长度
适用于创建数组的时候, 已经知道数组中要存放什么元素, 就直接把元素放到数组中.
(3) 第三种格式
是第二种的简化形式
数据类型 [ ] 数组名 = {元素1,元素2,元素3...} ;
二. 数组的使用(重点)
1. 数组的下标:
* 访问数组里面的元素,通过下标来进行访问
数组名[下标]
* 注意:下标从0开始--数组的长度-1
* 获取数组的长度:数组名.length 长度是一个int类型的数字
2. 使用下标
格式
数组名[下标] : 获取数组中指定索引位置的元素.
操作格式
对这个下标位置的元素进行赋值.
数组名[下标] = 值;
输出打印数组中指定索引位置的元素
System.out.println(数组名[下标]);
将数组中指定索引位置的元素, 赋值给其他的变量
数据类型 变量名 = 数组名[下标];
3. 数组的长度
数组名.length第一个元素的下标: 0最后一个元素的下标: 数组名.length - 1
三. 数组的操作(数组值交换时应该用带下标交换,不能直接用数值交换)
1. 数组使用时遇到的异常
(1) 数组索引越界异常
- 产生的原因: 访问了不存在的索引
(2) 空指针异常
- 产生的原因: 使用了null数组
2. 数组的遍历(重点)
遍历: 获取数组中的每一个元素
int[] arr = {1, 2, 3, 4, 5};/* 遍历: 获取数组中的每一个元素 arr[0], arr[1], arr[2], arr[3], arr[4] ↓ 获取数组中的每一个索引 ↓ 索引是从0开始, 到长度 - 1 ↓ for循环, 可以获取从n开始到m ↓让for循环中i的变化量, 和数组的索引一一对应*/// 让for循环中i的变化量, 和数组的索引一一对应// 0 ~ arr.length - 1for (int i = 0; i < arr.length; i++) { // 将i当成数组的索引 System.out.println(arr[i]);}
3. 数组获取最大值
public class Demo02_获取最大值 { public static void main(String[] args) { int[] arr = {5, 15, 2000, 10000, 100, 4000}; // 定义变量, 用来记录临时最大值 // max的初始值, 设置为数组中第一个元素 int max = arr[0]; // 遍历 // 为了提高效率, 将i初始值设置为1 for (int i = 1; i < arr.length; i++) { // 比较 // 如果遍历出来的元素(arr[i]), 比临时最大值(max)还大 if (arr[i] > max) { // 将遍历出来的元素, 赋值给临时最大值 max = arr[i]; } } System.out.println("最大值为: " + max); }
4. 数组的反转
public class Demo03_数组的反转 { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; // 交换 for (int i = 0; i < arr.length / 2; i++) { // 交换的是 i ~ arr.length - 1 - i // 交换的规律: 首尾相连 // 定义第三方变量 int temp = arr[i]; arr[i] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; } // 遍历打印 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } }}