1.二维数组:保存多个相同数据类型的一维数组
数据类型[][] 数组名 = 初值;
2.声明方式(和一维数组类似):
声明方式1:
数据类型[][] 数组名 = new 数据类型[index1][index2];
也可以叫index1行index2列
index1是指二维数组内有多少个一维数组;
index2是指每个一维数组内有多少个元素.
声明方式2:
数据类型[][] 数组名 = new 数据类型[][]{
{一维数组1},
{一维数组2},
.....
}
声明方式3(简化):
数据类型[][] 数组名 = {
{一维数组1},
{一维数组2},
.....
}
三维数组(保存的是多个二维数组):声明方式和二维类似,只不过要在数据类型后多加一个中括号
其他数组以此类推.可以叫几层几行几列
代码例子:
public class Kll {
public static void main(String[] args) {
int[][] arr=newint[3][2];//声明一个二维数组:数组里面有三个一维数组,且每个一维数组内有两个元素的二维数组
System.out.println(arr.length);//arr.length的长度是有一维数组的个数(指index1)
//二维数组创建
//创建二位数组:1,2,3 4,5,6(两行三列)
int[][] arr1 = new int[][] {
{1, 2, 3},
{4, 5, 6}
};
//arr1[0] 获取的是二维数组的第1个元素(是一个一维数组)
System.out.println(arr1[0].length);//是二维数组的第一个元素(即第一个一维数组)的长度
//打印的是地址:[[I@33909752 两个[:表示二维数组(所以有几个就表示几位数组);字符I:表示int类型;后边的是十六进制的堆内存地址
//System.out.println(arr1);
//遍历二维数组
//方式一:两个for循环
for (int i = 0; i < arr1.length; i++) {//外层循环遍历的是二维数组的元素(即一维数组)
for (int j = 0; j < arr1[i].length; j++) {//内层循环遍历的是当前正在遍历的一维数组内的元素
System.out.print(arr1[i][j] +"\t");
}
System.out.println();
}
//方式二:单层循环
/*
for (int i = 0; i < arr1.length; i++) {//循环遍历二维数组的元素的个数(即一维数组)
System.out.println(Arrays.toString(arr1[i]));//打印一维数组
}
*/
//三维数组创建
//声明三维数组2 2 3;2层2行3列
//2个元素(二维数组),每个二维数组内有2个一维数组,每个一维数组有3个元素
int[][][] arr2 = {
{
{1, 2, 3},
{4, 5, 6}
},
{
{7, 8, 9},
{10, 11, 12}
},
};
//遍历方式 :与二维类似,不过每种方式都会多一个for循环
//方式一:
for (int i = 0; i < arr2.length; i++) {//遍历的是有几个(元素)二维数组
for (int j = 0; j < arr2[i].length; j++) {//遍历的是当前正在遍历的二维数组有几个一维数组
for (int j2 = 0; j2 < arr2[i][j].length; j2++) {//遍历是当前正在遍历的一维维数组内有几个元素
System.out.print(arr2[i][j][j2]+"\t");//去掉ln不换行,\t是制表符,为了对齐隔开元素,便于查看
}
System.out.println();
}
System.out.println();
}
//方法二:
/*
for (int i = 0; i < arr2.length; i++) {//遍历的是有几个(元素)二维数组
for (int j = 0; j < arr2[i].length; j++) {//遍历的是当前正在遍历的二维数组有几个一维数组
System.out.println(arr2[i][j]+"\t");//直接打印一维数组
}
System.out.println();
}
*/
}
}
其他多维数组遍历方式类似,请仔细参考理解