二维数组存是储一维数组的数组
1.1 格式
1.1.1 常用格式
数据类型[ ] [ ] 变量名;
示例:int [ ] [ ] arr;
1.1.2 其他格式
A. 数据类型 变量名[] [] ;
示例:int arr [] [];
B. 数据类型 [] 变量[];
示例:int[] arr[];
2.1 动态初始化
2.1.1 格式
数据类型 [] [] 变量名 = new 数据类型[m] [n];
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组可以存放多少个元素
示例:
int[][] arr =new int[2][3]; //该数组有两个一维数组,每一个一维数组可以存储3个s
示例:
package com.huly.twoarray; public class TDArray { public static void main(String[] args) { int[][] arr = new int[2][3]; System.out.println(arr); /* 此处输出结果为:[[I@1b6d3586 [[指的是此数组为二维数组 I指的是数据的数据类型 @是隔断符 1b6d3586是十六进制内存地址 */ System.out.println("-------"); System.out.println(arr[0]); System.out.println(arr[1]); //这两句打印的是对应一维数组的地址:[I@4554617c、[I@74a14482 /* system.out.println(arr[2]);//此句不注释掉的话运行到此处时程序停止并报错,但此程序可以被启动 */ System.out.println("---------"); System.out.println(arr[0][1]); /* 想要获取二维数组中的元素需要在在一维数组的后面再加上索引,代表着对应一位数组里第2个元素 由于数组动态初始化是指定数组长度,所以系统会自动给数组里的元素默认赋值为零,所以此处结果也为零 */ arr[0][1] = 1;//此处是给二维数组中的元素赋值 System.out.println(arr[0][1]);//输出结果为:1 } }
2.1.2 注意事项
二维数组中存储的是一维数组,可以先创建好一维数组再放入二维数组中;
二维数组不能存入超过定义长度的数据
创建好的一维数组长度比定义的二维数组长度长,不影响将一维数组放入二维数组中存储,因为一维数组是将地址赋值给了二维数组,本身一维数组已经在内存空间中开辟好了空间,二维数组根据地址值可以直接取出相应数据。
示例:
package com.huly.twoarray; public class TDArray2 { public static void main(String[] args) { int arr1[] = {1,2,3}; int arr2[] = {4,5,6,7};//程序运行时,这俩一维数组先在堆内存中开辟空间存入数据 int arr3[][] = new int[2][3];//定义二维数组包含两个一维数组,每个一维数组长度是3 arr3[0] = arr1;//将一维数组arr1的地址赋值给二维数组的第一个一维数组 arr3[1] = arr2;//将arr2的地址赋值给二维数组arr的第二个一维数组 System.out.println(arr3[0][1]); System.out.println(arr3[1][3]); //arr3[1]等效与arr2,后面再带一个[3],即可访问arr2的第四个元素 } }
2.2 静态初始化
2.2.1 格式
数据类型 [] [] 变量名 = new 数据类型{{元素1,元素2······},{元素1,元素2······},······};
示例:
int[][] arr = new int {{1,2},{3,4}}; int[][] arr = {{1,2},{1,2}};
注意事项:二维数组静态初始化时,可以先将一维数组赋值,然后再将一维数组赋值给二维数组
示例:
int[][] arr1 = {1,2};int[][] arr2 = {3,4}; int arr[][] = {arr1,arr2};
3.1 数组遍历
package com.huly.twoarray; public class TDArray2 { public static void main(String[] args) { int arr1[] = {1,2,3}; int arr2[] = {4,5,6,7}; int arr3[][] = new int[2][3]; arr3[0] = arr1; arr3[1] = arr2; System.out.println(arr3[0][1]); System.out.println(arr3[1][3]); for (int i = 0; i < arr3.length; i++) { for (int j = 0; j <arr3[i].length ; j++) { System.out.println(arr3[i][j]); } } } }
3.2 二维数组求和
package com.huly.twoarray; import java.util.Scanner; public class sumTDArray { public static void main(String[] args) { int sum = 0; Scanner sc = new Scanner(System.in); int[][] arr1 = new int[3][3]; for (int i = 0; i < arr1.length; i++) { for (int i1 = 0; i1 < arr1[i].length; i1++) { System.out.println("入第"+(i+1)+"季度第"+(i1+1)+"月营收"); arr1[i][i1] = sc.nextInt(); } } for (int i = 0; i < arr1.length; i++) { for (int i1 = 0; i1 < arr1[i].length; i1++) { sum+=arr1[i][i1]; System.out.println(arr1[i][i1]); } } System.out.println(sum); } }