数组概述
1-数组(Array)
数组是多个相同类型数据按一定顺序排列的集合,并使用一个名字,通过编号的方式对这些数据进行统一管理。
2-数组相关概念
- 数组名
- 元素
- 角标、下标、索引
- 数组的长度:元素的个数
3-数组的特点
- 数组是有序排列的
- 数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
- 创建数组对象会在内存中开辟一整块连续的空间
- 数组的长度一旦确定,就不能修改
4-数组的分类
- 根据维数:一维数组、二维数组…
- 根据数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
一维数组
1-一维数组的声明与初始化
正确的方式:int num;//声明num = 10;//初始化int id = 1001;//声明 + 初始化int[] ids;//声明//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行ids = new int[]{1001,1002,1003,1004};//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行String[] names = new String[5];int[] arr4 = {1,2,3,4,5};//类型推断错误的方式:// int[] arr1 = new int[];// int[5] arr2 = new int[5];// int[] arr3 = new int[3]{1,2,3};
2-一维数组元素的引用(通过角标的方式调用)
//数组的角标(或索引从0开始的,到数组的长度-1结束。names[0] = "王铭";names[1] = "王赫";names[2] = "张学良";names[3] = "孙居龙";names[4] = "王宏志";//charAt(0)
3-数组的属性:length
System.out.println(names.length);//5System.out.println(ids.length);说明:数组一旦初始化,其长度就是确定的。arr.length数组长度一旦确定,就不可修改。
4-一维数组的遍历
for(int i = 0;i < names.length;i++){System.out.println(names[i]);}
5-一维数组元素的默认初始化值
二维数组
1-二维数组理解
数组属于引用数据类型
数组的元素也可以是引用数据类型
一个一维数组A的元素如果还是一个一维数组类型的,则此数组A称为二维数组
2-二维数组的声明与初始化
正确的方式:int[] arr = new int[]{1,2,3};//一维数组//静态初始化int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};//动态初始化1String[][] arr2 = new String[3][2];//动态初始化2String[][] arr3 = new String[3][];//也是正确的写法:int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断错误的方式:// String[][] arr4 = new String[][4];// String[4][3] arr5 = new String[][];// int[][] arr6 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};
3-二维数组元素调用
System.out.println(arr1[0][1]);//2System.out.println(arr2[1][1]);//nullarr3[1] = new String[4];System.out.println(arr3[1][0]);System.out.println(arr3[0]);
4-二维数组的属性
System.out.println(arr4.length);//3System.out.println(arr4[0].length);//3System.out.println(arr4[1].length);//4
5-遍历二维数组元素
for(int i = 0;i < arr4.length;i++){for(int j = 0;j < arr4[i].length;j++){System.out.print(arr4[i][j] + " ");}System.out.println();}
6-二维数组的默认初始化
* 规定:二维数组分为外层数组的元素,内层数组的元素* int[][] arr = new int[4][3];* 外层元素:arr[0],arr[1]等* 内层元素:arr[0][0],arr[1][2]等** ⑤ 数组元素的默认初始化值* 针对于初始化方式一:比如:int[][] arr = new int[4][3];* 外层元素的初始化值为:地址值* 内层元素的初始化值为:与一维数组初始化情况相同** 针对于初始化方式二:比如:int[][] arr = new int[4][];* 外层元素的初始化值为:null* 内层元素的初始化值为:不能调用,否则报错。
7-二维数组的内存结构

Arrays工具类的使用
Arrays工具类定义在java.util包下,提供很多操作数组的方法
//1.boolean equals(int[] a,int[] b):判断两个数组是否相等。int[] arr1 = new int[]{1,2,3,4};int[] arr2 = new int[]{1,3,2,4};boolean isEquals = Arrays.equals(arr1, arr2);System.out.println(isEquals);//2.String toString(int[] a):输出数组信息。System.out.println(Arrays.toString(arr1));//3.void fill(int[] a,int val):将指定值填充到数组之中。Arrays.fill(arr1,10);System.out.println(Arrays.toString(arr1));//4.void sort(int[] a):对数组进行排序。Arrays.sort(arr2);System.out.println(Arrays.toString(arr2));//5.int binarySearch(int[] a,int key)int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};int index = Arrays.binarySearch(arr3, 210);if(index >= 0){System.out.println(index);}else{System.out.println("未找到");}
数组的常见异常
- 数组角标越界异常:ArrayIndexOutOfBoundsException ```java int[] arr = new int[]{1,2,3,4,5};
// for(int i = 0;i <= arr.length;i++){ // System.out.println(arr[i]); // }
// System.out.println(arr[-2]);
// System.out.println(“hello”);
2. 空指针异常:NullPointerException```java// 情况一:// int[] arr1 = new int[]{1,2,3};// arr1 = null;// System.out.println(arr1[0]);//情况二:// int[][] arr2 = new int[4][];// System.out.println(arr2[0][0]);//情况:String[] arr3 = new String[]{"AA","BB","CC"};arr3[0] = null;System.out.println(arr3[0].toString());
一旦程序出现异常,未处理时,就终止执行。

