目录
二维数组
本质:二维数组是一维数组组成的,而一维数组中是由n个元素组成
定义一个二维数组.
int arr[][] = {{},{},{}};
System.out.println("二维数组长度为" + arr.length);
再将里面输入数值
二维数组输出
/*
请用二维数组输出如下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
*/
//第一种方式
int arr[][] = {{0,0,0,0,0,0},{0,0,1,0,0,0},
{0, 2,0, 3,0,0},{0,0,0,0,0,0}};
//第二种方式
// int arr[][] = new int[4][6];
// arr[1][2] = 1;
// arr[2][1] = 2;
// arr[2][3] = 3;
System.out.println(arr.length);
//打印二维数组
for(int i = 0;i < arr.length; i++) {
//arr[i]获得每个一维数组的长度
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println(" ");
}
第一种方式采用的是静态初始化,输入固定的值,然后输出。
第二种方式采用的是动态初始化(下面会说明)。
输出二维数组一定要会!
输出分析:第一个for,变量 i 与二维数组的长度(长度为4)进行循环。
第二个for,与二维数组中的一维数组(长度为6)进行循环。
注意事项
// 如果我们要访问第 (i+1)个一维数组的第 j+1 个值 arr[i][j];
System.out.println("二维数组中的第2个元素中的第3个数="+arr[1][2]);
动态、静态初始化
声明->开辟空间
test1.静态初始化
//动态初始化
int arr[][];//声明
arr = new int[2][3];//再开空间
arr[1][1] = 8;
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
给二维数组中的某个地址设置变量,未设置的则默认为零
(默认初始化)
(byte为0,int为0,float为0.0,double为0.0,boolearn为false,char为0)
test2.动态初始化
//动态初始化_2
//写一个1,22,333,4444,的程序,用二维数组
int arr[][] = new int[4][];
//只有4个一维数组,但是数组的空间没有开辟
//开始循环
for(int i = 0; i < arr.length; i++) {
//给每一个数组开辟空间。如果没有开辟空间,那就是null
//arr[0] = new int[1] 二维数组下标为0的一维数组有一个空间
//arr[1] = new int[2] 二维数组下标为1的一维数组有两个空间
arr[i] =new int [i+1];
for (int j = 0; j < arr[i].length; j++) {
//j < arr[1] 长度为2,循环两次
arr[i][j] = i + 1;
}
}
for (int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
我的理解:声明了二维数组,但数组空间未开辟。利用for循环
i = 0,1,2,3
第一次循环给第一行(下标为0)一个数,数组空间是[i + 1]
第二次循环给第二行(下标为1)两个数,数组空间是[i + 1]
第三次循环给第三行(下标为2)三个数,数组空间是[i + 2]
.....,嵌套的for循环,给每个开辟的空间遍历数值。
最后输出出来。