数组,其实他就是一个容器,方便对数据管理和操作。
一:数组容器的特点
1:数组容器一旦初始化,长度就固定了,不能再改变
2:数组容器中既可以存储基本数据类型,也可以存储引用数据类型
3:一个数组容器中的所有元素(就是容器中装的东西)的数据类型必须是相同的
二:数组的定义格式
1:格式一:
元素的数据类型[] 数组的名字 = new元素的数据类型[元素的个数(数组的长度)]:
// 第一种数组定义格式 int[] arrOne = new int[5];
2:格式二:
元素的数据类型[] 数组的名字 = new 元素的数据类型{元素1,元素2,····};
// 第二种定义数组的格式 int[] arr_two = new int[]{12,23,43};
3:格式三:(属于格式二的简化写法)
元素的数据类型[] 数组的名字 = {元素1,元素2,···.}
// 第三种定义数组的格式 int[] arr = {12,32,54,23};
三:数组索引(存取数据)
我们存放在数组中的数据都是有编号的,我们将这个编号称之为索引。索引下标从0开始,数组长度减一结束。
那么,我们既可以通过这个索引存数据,也可以通过这个索引取数据。
下面我们来测试一下:
上面的程序演示了如何向数组中存数据
/** * @name 主方法 * @param args */ public static void main(String[] args) { // 定义长度为3的数组 int[] arrOne = new int[3]; arrOne[0] = 1; arrOne[1] = 2; arrOne[2] = 3; System.out.println("数组中的第一个元素:"+arrOne[0]); System.out.println("数组中的第二个元素:"+arrOne[1]); System.out.println("数组中的第三个元素:"+arrOne[2]); // arrOne[3] = 4; System.out.println("程序执行结束了"); }
输出:
数组中的第一个元素:1
数组中的第二个元素:2
数组中的第三个元素:3
程序执行结束了
上面的程序为我们演示了如何从数组中取数据。
四:使用for循环遍历数组
这部分内容在我们之前学习for循环的时候,就已经提前尝试过了,这里把上篇的例子再写一下:
/** * @name 主方法 * @param args */ public static void main(String[] args) { // 定义长度为3的数组 int[] arrOne = new int[3]; arrOne[0] = 1; arrOne[1] = 2; arrOne[2] = 3; // arrOne[3] = 4; for(int i = 0; i < arrOne.length;i++) { System.out.println("数组中的第"+i+"个元素:"+arrOne[i]); } System.out.println("程序执行结束了"); }
输出:
数组中的第0个元素:1
数组中的第1个元素:2
数组中的第2个元素:3
程序执行结束了
五:数组常见错误:
1:指针越界异常:ArrayIndexOutOfBoundsException
// 定义长度为3的数组 int[] arrOne = new int[3]; arrOne[0] = 1; arrOne[1] = 2; arrOne[2] = 3; arrOne[3] = 4;
上边这段代码就会报指针越界异常。
2:空指针异常:NullPointerException
arrOne = null; System.out.println("数组中的第1元素:"+arrOne[0]);
上边这段代码就会报 空指针异常
Java中 null只能给引用数据类型赋值,数组是一个引用数据类型。
六:数组的常见操作
1:获取最值(最大、最小)
(1):操作值
// 定义一个数组 int[] arrOne = {11,4,6,7,15,9}; // ====================================================== // 操作值 int max = 0; for(int i = 0; i < arrOne.length;i++ ) { if(max < arrOne[i]) { max = arrOne[i]; } } System.out.println("数组的最大的元素是:"+max);
输出:数组的最大的元素是:15
(2):操作索引
// 定义一个数组 int[] arrOne = {11,4,6,7,15,9}; // ====================================================== // 操作索引 int index = 0; for(int i = 0; i < arrOne.length;i++ ) { if(arrOne[index] < arrOne[i]) { index = i; } } System.out.println("数组的最大的元素是:"+arrOne[index]);
输出:数组的最大的元素是:15
2:在数组中查找对应的元素
public static void main(String[] args) { // 基本查找 int[] arr = {11,21,32,45,89}; // 使用控制台输入输出类 Scanner sc = new Scanner(System.in); System.out.println("请您输入一个数字:"); int num = sc.nextInt(); int index = -1; for(int i = 0;i < arr.length;i++) { if(num == arr[i]) { index = i; break; } } if(index != -1) { System.out.println("与"+num+"相等数字索引是:"+index); } else { System.out.println("没有找到对应的数字!"); } }
输出:
请您输入一个数字:
32
与32相等数字索引是:2
3:数组排序
(1):选择排序
public static void main(String[] args) { int[] arr = {11,52,14,25,85,65,21,24,99}; // 选择排序 for(int i = 0;i < arr.length - 1;i++) { for(int j = i + 1; j < arr.length; j++) { if(arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } // 输出排序之后的数组 for(int i = 0; i < arr.length;i++) { System.out.println(arr[i]); } }
输出:11
14
21
24
25
52
65
85
99
(2):冒泡排序
public static void main(String[] args) { int[] arr = {11,52,14,25,85,65,21,24,99}; // 冒泡排序 for(int i = 0;i < arr.length - 1;i++) { for(int j = 0;j < arr.length - 1 - i;j++) { if(arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } // 输出排序之后的数组 for(int i = 0; i < arr.length;i++) { System.out.println(arr[i]); } }
输出:
11
14
21
24
25
52
65
85
99
七:多维数组
数组元素为一维数组的数组我们称之为二维数组。
1:定义方式:
// 这个二维数组中有三个一维数组,每个一维数组中有两个元素 int[][] arrOne = new int[3][2]; // 这个二维数组中有三个一维数组,每个一维数组中有多个元素(不确定) int[][] arrTwo = new int[3][]; // 这个直接就赋值了 int[][] arrThree = {{1,23},{52,96},{2,56,36,45}};
2:二维数组遍历
// 这个直接就赋值了 int[][] arrThree = {{1,23},{52,96},{2,56,36,45}}; for(int i = 0;i < arrThree.length;i++) { for(int j = 0;j < arrThree[i].length;j++) { System.out.println(arrThree[i][j]); } }
输出:
1
23
52
96
2
56
36
45
以上大概就是关于java数组的基本使用,有好的建议,请在下方输入你的评论。