1.二维数组概述:元素为一维数组的数组
2.二维数组定义格式
格式1:
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
举例:int[][ arr = new int[3][2];
定义了一个二维数组arr
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m][n]获取,表示获取第m+1个一维数组的第 n+1个元素
注:可能还会看到以下几种写法,它们也是正确的
1.intt[] arr[] = new int[3][2];
2.int arr[][] = new int[3][2];
System.out.println(arr); //获取的是二维数组的地址值 [[I@1540e19d [[表示二维数组
System.out.println(arr[0]); //获取的是一维数组的地址值 [I@677327b6
System.out.println(arr[0][0]); //获取的是元素值
public class Array2Demo1 {
public static void main(String[] args) {
//定义一个二维数组,使用格式一做初始化
int[][] arr = new int[3][2];
System.out.println(arr); //[[I@1540e19d [[表示二维数组
System.out.println(arr[0]); //[I@677327b6
System.out.println(arr[1]); //[I@14ae5a5
System.out.println(arr[2]); //[I@7f31245a
System.out.println(arr[0][0]);
System.out.println(arr[0][1]); //获取二维数组中第一个一维数组中的第二个元素
System.out.println(arr[1][0]); //获取二维数组中第二个一维数组中的第一个元素
System.out.println(arr[1][1]); //获取二维数组中第二个一维数组中的第二个元素
System.out.println(arr[2][0]); //获取二维数组中第三个一维数组中的第一个元素
System.out.println(arr[2][1]); //获取二维数组中第三个一维数组中的第二个元素
}
}
格式2:
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这样定义没有直接给出一维数组的元素个数,可以动态的给出
举例:int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[1];
int[][] arr = new int[3][];
System.out.println(arr); //[[I@1540e19d
System.out.println(arr[0]); //null 因为定义格式的第二个中括号没有给值
System.out.println(arr[0][1]); //报错,空指针异常
//给二维数组中第一个元素赋值一个一维数组
arr[0] = new int[4]; //赋值后的意义是:表示二维数组中第一个元素是一个长度为4的int类型的一维数组
System.out.println(arr[0]); //二维数组中第一个一维数组的地址值[I@677327b6
System.out.println(arr[0][1]); //二维数组中第一个一维数组中的第二个元素 系统默认值0
public class Array2Demo2 {
public static void main(String[] args) {
//定义二维数组的第二种格式
int[][] arr = new int[3][];
System.out.println(arr); //[[I@1540e19d
System.out.println(arr[0]); //null
System.out.println(arr[1]); //null
System.out.println(arr[2]); //null
//给二维数组中第一个元素赋值一个一维数组
arr[0] = new int[4]; //赋值后的意义是:表示二维数组中第一个元素是一个长度为4的int类型的一维数组
arr[1] = new int[5]; //赋值后的意义是:表示二维数组中第二个元素是一个长度为5的int类型的一维数组
arr[2] = new int[10]; //赋值后的意义是:表示二维数组中第三个元素是一个长度为10的int类型的一维数组
System.out.println(arr); //二维数组的地址值[[I@1540e19d
System.out.println(arr[0]); //二维数组中第一个一维数组的地址值[I@677327b6
System.out.println(arr[1]); //二维数组中第二个一维数组的地址值[I@14ae5a5
System.out.println(arr[2]); //二维数组的第三个一维数组的地址值[I@7f31245a
}
}
格式3:
数据类型[][] 变量名 = new 数据类型[][]{{元素...},{元素...},...,{元素...}};
简化格式:数据类型[][] 变量名 = {{元素...},{元素...},...,{元素...}};
举例:int[][] arr = {{1,2},{3,4,5},{1,2,34,5};
表示的是:二维数组arr中有三个一维数组,分别是{1,2},{3,4,5},{1,2,34,5}
public class Array2Demo3 {
public static void main(String[] args) {
//数组的第三种定义格式
int[][] arr = {{1, 2}, {3, 4, 5}, {1, 2, 34, 5}};
System.out.println(arr); //二维数组的地址值
System.out.println(arr[0]); //二维数组第一个一维数组的地址值
System.out.println(arr[1]); //二维数组第二个一维数组的地址值
System.out.println(arr[2]); //二维数组第三个一维数组的地址值
//获取二维数组中第一个一维数组的第一个元素
System.out.println(arr[0][0]);
//获取二维数组中第一个一维数组的第一个元素
System.out.println(arr[0][1]);
//获取二维数组中第二个一维数组的所有元素
System.out.println(arr[1][0]);
System.out.println(arr[1][1]);
System.out.println(arr[1][2]);
//获取二维数组中第三个一维数组的所有元素
System.out.println(arr[2][0]);
System.out.println(arr[2][1]);
System.out.println(arr[2][2]);
System.out.println(arr[2][3]);
}
}
3.相关练习题
1.公司年销售额求和 某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99
public class Array2Test2 {
public static void main(String[] args) {
//定义一个二维数组表示是一个公司,每个季度相当于一个一维数组作为二维数组的元素传入
int[][] arr = {{22, 66, 44}, {77, 33, 88}, {25, 45, 65}, {11, 66, 99}};
//定义一个变量统计总销售额
int sum = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
sum = sum + arr[i][j];
}
}
System.out.println("该公司年销售额为:" + sum);
}
}