public class test { public static void main(String[] args) { int[] arr1 = new int[3]; //数组动态初始化 int[] arr2 = new int[] {11,22,33}; //数组静态初始化 int[] arr3 = new int[3] {11,22,33}; //不允许动静相结合 int[] arr4 = {11,22,33}; //静态初始化的简写形式,声明与赋值在同一行 } }
5行报错,动态初始化和静态初始化不能同时使用。
数组操作的两个常见小问题:
- ArrayIndexOutOfBoundsException,数组索引(下标)越界异常。原因:访问了不存在的索引。
- NullPointerException,空指针异常。原因:数组已经不存在,还用数组名访问数组中的元素。
public class test { public static void main(String[] args) { int[] arr1 = new int[3]; /************数组索引(下标)越界异常*************/ System.out.println(arr1[3]); //当访问数组中不存在的索引,会出现索引异常 /************空指针异常*************/ arr1 = null; //当数组引用赋值为null,再去调用数组中的元素就会出现空指针异常。 System.out.println(arr1[0]); } }
数组的反转(元素对调):
- 明确返回值类型void
- 明确参数列表int[ ] arr
public class test { public static void main(String[] args) { int[] arr = {11,22,33,44,55}; reverseArray(arr); //反转数组 print(arr); //输出 } /* * 数组元素反转 1、明确返回值类型void 2、明确参数列表int[ ] arr */ public static void reverseArray(int[] arr) { for (int i = 0;i < arr.length / 2 ;i++) { //arr[0]和arr[arr.length-1-0]交换 //arr[1]和arr[arr.length-1-1]交换 //arr[2]和arr[arr.length-1-2]交换 //... int temp = arr[i]; //设置一个中间变量存储中间值 arr[i] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; } } /* * 数组遍历输出 1、明确返回值类型void 2、明确参数列表int[] arr */ public static void print(int[] arr) { for (int i = 0; i < arr.length; i++) { //遍历数组中的每一个元素 System.out.println(arr[i] + " "); //打印到控制台 } } }
二维数组:
数组为引用数据类型,默认初始化值为null。
二维数组的三种表示格式:
public class test { public static void main(String[] args) { /* * 第一种,也是最常用 */ int[][] arr = new int[3][2]; /* * 第二种 */ int[][] arr1 = new int [3][]; //声明一个二维数组,由三个一维数组组成,默认初始化值为null arr1[0] = new int[3]; //初始化第一个一位数组 arr1[1] = new int[5]; //初始化第二个一位数组 /* * 第三种 */ int[][] arr2 = {{1,2,3},{4,5},{6,7,8}}; //每个大括号代表一个一维数组 } }
分析以下程序段输出
public class test { public static void main(String[] args) { int[][] arr = new int[3][2]; System.out.println(arr); //二维数组(地址值) System.out.println(arr[0]); //二维数组中的第一个一维数组(地址值) System.out.println(arr[0][0]); //二维数组中的第一个一维数组的第一个元素(元素值) } }
输出结果:
[[I@42a57993 //二维数组(地址值) [I@75b84c92 //二维数组中的第一个一维数组(地址值) 0 //二维数组中的第一个一维数组的第一个元素(元素值)
图解分析: