声明和初始化
静态初始化
// 静态初始化:
// 一维数组int[] arr1_1 = {1, 2, 4};System.out.println(Arrays.toString(arr1_1));
// 二维数组int[][] arr1_2 = {{1, 2}, {4, 5}, {9, 10}};for (int[] i :arr1_2) {System.out.print(Arrays.toString(i));}System.out.println();
动态初始化
// 动态初始化
// 一维数组int[] arr2_1 = new int[3];arr2_1[0] = 1;arr2_1[1] = 2;arr2_1[2] = 4;System.out.println(Arrays.toString(arr2_1));
// 二维数组1int[][] arr2_2 = new int[3][2];arr2_2[0][0] = 1;arr2_2[0][1] = 2;arr2_2[1][0] = 4;arr2_2[1][1] = 5;arr2_2[2][0] = 9;arr2_2[2][1] = 10;for (int[] i :arr2_2) {System.out.print(Arrays.toString(i));}System.out.println();
// 二维数组2int[][] arr2_3 = new int[3][];arr2_3[0] = new int[]{1, 2};arr2_3[1] = new int[]{4, 5};arr2_3[2] = new int[]{9, 10};for (int[] i :arr2_3) {System.out.print(Arrays.toString(i));}
写法
一维数组
// 写法:
// 一维数组1int[] arr3_1 = new int[9];
// 一维数组2int arr3_2[] = new int[9];
// 一维数组3int arr3_3[] = new int[]{8, 3, 4};
// 一维数组4-类型推断int arr3_4[] = {8, 3, 4};
二维数组
// 二维数组1int[][] arr4_1 = new int[3][2];
// 二维数组2int arr4_2[][] = new int[3][2];
// 二维数组3int[] arr4_3[] = new int[3][2];
// 二维数组4int[][] arr4_4 = new int[][]{{1, 2}, {4, 5}, {9, 10}};
// 二维数组5-类型推断int[][] arr4_5 = {{1, 2}, {4, 5}, {9, 10}};
声明和初始化总代码
package lesson.l7_array;import java.util.Arrays;/*** Illustration** @author DengQing* @version 1.0* @datetime 2022/5/7 18:17* @function 二维数组*/
public class TwoDimensionalArray {public static void main(String[] args) {
// 静态初始化:
// 一维数组int[] arr1_1 = {1, 2, 4};System.out.println(Arrays.toString(arr1_1));
// 二维数组int[][] arr1_2 = {{1, 2}, {4, 5}, {9, 10}};for (int[] i :arr1_2) {System.out.print(Arrays.toString(i));}System.out.println();// 动态初始化
// 一维数组int[] arr2_1 = new int[3];arr2_1[0] = 1;arr2_1[1] = 2;arr2_1[2] = 4;System.out.println(Arrays.toString(arr2_1));
// 二维数组1int[][] arr2_2 = new int[3][2];arr2_2[0][0] = 1;arr2_2[0][1] = 2;arr2_2[1][0] = 4;arr2_2[1][1] = 5;arr2_2[2][0] = 9;arr2_2[2][1] = 10;for (int[] i :arr2_2) {System.out.print(Arrays.toString(i));}System.out.println();
// 二维数组2int[][] arr2_3 = new int[3][];arr2_3[0] = new int[]{1, 2};arr2_3[1] = new int[]{4, 5};arr2_3[2] = new int[]{9, 10};for (int[] i :arr2_3) {System.out.print(Arrays.toString(i));}// 写法:
// 一维数组1int[] arr3_1 = new int[9];
// 一维数组2int arr3_2[] = new int[9];
// 一维数组3int arr3_3[] = new int[]{8, 3, 4};
// 一维数组4-类型推断int arr3_4[] = {8, 3, 4};// 二维数组1int[][] arr4_1 = new int[3][2];
// 二维数组2int arr4_2[][] = new int[3][2];
// 二维数组3int[] arr4_3[] = new int[3][2];
// 二维数组4int[][] arr4_4 = new int[][]{{1, 2}, {4, 5}, {9, 10}};
// 二维数组5-类型推断int[][] arr4_5 = {{1, 2}, {4, 5}, {9, 10}};}
}
二维数组的长度
int [][]arr1=new int[][]{{1,2},{8,9,10},{-1}};
// 二维数组的行-外层的System.out.println(arr1.length);//3
// 二维数组的列-内部的System.out.println(arr1[0].length);//2System.out.println(arr1[1].length);//3System.out.println(arr1[2].length);//1
二维数组的遍历
方法1
// 二维数组的遍历
// 方法1:两层for循环for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {/*1 2 8 9 10 -1 */System.out.print(arr[i][j]+"\t");}System.out.println();}
方法2
// 方法2:foreach+Arrays.toStringfor (int[] a:arr) {
// [1, 2][8, 9, 10][-1]System.out.print(Arrays.toString(a));}
默认初始值
public class TwoDimensionalArray3 {public static void main(String[] args) {
// 一维数组int[]a=new int[2];System.out.println(a);//[I@43a25848System.out.println(a[0]);//0System.out.println(a[1]);//0// 二维数组1int[][]arr=new int[3][4];System.out.println(arr);//[[I@3ac3fd8b
// 外层元素/*[I@43a25848:* [一个代表存的是一维数组* I代表是int型* 43a25848代表地址*/System.out.println(arr[0]);//[I@43a25848System.out.println(arr[1]);//[I@3ac3fd8b
// 内层元素System.out.println(arr[0][0]);//0System.out.println(arr[1][1]);//0// 二位数组2int[][]array=new int[3][];System.out.println(array);//[[I@3b6eb2ec
// 外层元素/*null:列存的是一维数组,是引用类型,为null*/System.out.println(array[0]);//nullSystem.out.println(array[1]);//null}
}
内存解析
案例1
案例2
案例3
案例4: