1.9 数组
1.9.5 数组中的数组
二维数组[][]
格式1:
int[][] arr = new int[3][2];
1、定义了名称为arr的二维数组。
2、二维数组中有3个一维数组。
3、每一个一维数组中有2个元素。
4、一维数组的名称分别为arr[0], arr[1], arr[2]。
5、给第一个一维数组第一个脚标位赋值为78写法是:arr[0][1] = 78;。
6、arr存储的是二维数组的初始地址,arr[0]、arr[1]、arr[2]存储的是一维数组的初始地址。
示例1:
class Array2Demo
{
public static void main(String[] args){
int[][] arr = new int[3][2];
//直接打印二维数组
System.out.println(arr);
//直接打印二位数组中的角标为0的一维数组
System.out.println(arr[0]);
//直接打印二维数组中的角标为0的一维数组的角标为0的元素
System.out.println(arr[0][0]);
}
}
运行结果:[[I@c17164
[I@1fb8ee3
0
说明:打印的内容中@左边是实体的类型("["代表一维数组,"[["代表二维数组,"I"代表int类型),@右边是实体的哈希值。
示例2:打印二维数组和一维数组的长度
class Array2Demo
{
public static void main(String[] args){
int [][] arr = new int[3][2];
//打印二维数组的长度,其实就是一位数组的个数
System.out.println(arr.length );
//打印二位数组中角标为1一位数组的长度
System.out.println(arr[1].length );
}
}
运行结果:
3
2
格式2:
int[][] arr = new int[3][];
二维数组中有3个一维数组,每个一维数组都是默认初始化值null,可以对这个三个一维数组分别进行初始化。
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
示例:
class Array2Demo
{
public static void main(String[] args){
int[][] arr = new int[3][];
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[0][0]);
}
}
运行结果:[[I@de6ced
null
空指针异常
说明:
示例中arr[0]为null的原因是没有为它初始化一位数组。
由于arr[0]为null,通过它获取一维数组角标为0的元素肯定会报空指针异常错误!
格式3:
int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组,二维数组中的有三个一维数组,每一个一维数组中具体元素也都已初始化。
第一个一维数组 arr[0] = {3,8,2};,第二个一维数组 arr[1] = {2,7};,第三个一维数组 arr[2] = {9,0,1,6};。
第三个一维数组的长度表示方式:arr[2].length;。
应用:求二维数组所有元素的和。
class Array2Demo
{
public static void main(String[] args){
int sum = 0;
int[][] arr = {{3,1,7},{5,8,2,9},{4,1}};
for(int x = 0; x < arr.length; x++){
for(int y = 0; y < arr[x].length; y++){
sum += arr[x][y];
}
}
System.out.println("sum = " + sum);
}
}
运行结果
40 |
|