目录
多维数组的概念
二维数组
三维数组
四维数组
总结
多维数组的概念
我们之前学的数组都是一位数组(一个维度),那么自然就有两个维度,三个维度的数组
至于可以到多少维(可以无限扩展)
那么,什么是多维数组?
我们拿坐标轴来举栗子
都知道,一维空间是一个维度的,只有一个坐标---x,这时可以表示只有长度的线
二维空间较于一维空间多了一个坐标---y,这时,可以表示有长宽的线
三维空间较于二维空间多了一个坐标---z,这时,我们的线已经有了长,宽,高了
数组也是,一位数组可以表示只有一个维度的数据(一条线,没有宽度,只有长度)
二维数组可以表示两个维度的数,三维数组可以表示三个维度,四维数组....
可以这样理解
也可以把一位数组理解为是一个箱子,二维数组是一个大箱子,用于存放一位数组这个箱子的箱子.
三维数组是一个超大箱子,用于存放二维数组这个箱子,这样一层一层的.
高维包含低维.
画个图就是这样(使用Animate绘制的动图)
二维数组
二维数组比一维数组多一个维度.
二维数组中存的就是一维数组
通常,我们定义一个一维数组的方式为 int[] xxx;
我们定义二维数组的方式与其相似,只不过多了一个[]
定义二维数组: int[][] xxx;
使用的方式也与其相似
一维数组存数字,二维数组存一维数组
- 例如我们以前直接创建一维数组
- int[] arr = {1,2,3};
- 现在直接创建二维数组
- int[][] arr = {{1,2,3},{4,5,6},{7,8}};
- 不同的是{}里面还有一个{}
- 我们以前使用一维数组
- arr[下标];
- 使用二维数组
- arr[一维数组的下标][下标]
- 不同的是先要获取对应一维数组,然后在获取一维数组里的值
接下来试一下遍历二维数组
以前我们遍历一维数组的方式是通过数组的.length来进行遍历,通过i来取值
以前遍历一维数组的方式
for (int i = 0;i < arr.length;i++) {
}
现在我们的二维数组需要遍历的话也是同样的
二维数组存一维数组,所以二维数组的.length返回的是二维数组内一维数组的数量
然后在遍历一维数组就行了
运行,结果如下
二维数组有什么用呢?
做图形学什么的用到多维数组比较多,比如二维游戏什么的
例如推箱子游戏,使用二维数组就可以制作出来了,看下面这种形式的二维数组就能明白了(x,y)
int[][] arr = {
{1,1,1,1,1,1,1},
{1,0,0,0,0,0,1},
{1,0,0,0,0,0,1},
{1,0,0,0,0,0,1},
{1,1,1,1,1,1,1},
};
上面的这种看起来像不像一个场景?
如果1代表城墙,0代表空气的话.
一个正方形的场景.
三维数组
三维数组组比二维数组多一个维度
维度越高复杂度越高.
我们所处的世界也是三维的,拥有x,y,z三个轴
与二维数组一样,三维数组是用于存二维数组的
使用方式也一样,定义的话使用 int[][][] arr;(多了一个[])
例如直接创建三维数组
int[][][] arr = {
{
{1,2,3},
{4,5,6},
{7,8}
},
{
{8,7},
{6,5,4},
{3,2,1}
}
};
从上面的代码有没有感觉到z轴呢?
使用方法和二维数组一样
循环遍历三维数组
运行结果如下
还有一种方法,我们是将二维数组存起来然后再从二维数组获取一维数组,可以直接取
代码如下
二维数组也可以这样使用
四维数组
按理说维度应该可以一直扩展...
四维数组不常用,我们空间中的四维应该指的是时间
这里就只列出个循环遍历的例子,使用方法和二维三维一样
public class Test {
public static void main(String[] args) {
// 四维数组,包含两个三维数组.
int[][][][] arr = {
{
{
{1,2,3},
{4,5,6},
{7,8}
},
{
{8,7},
{6,5,4},
{3,2,1}
}
},
{
{
{100,100,99},
{101,98,99},
{97,98}
},
{
{105,55},
{90,120,71},
{94,94,82}
}
}
};
for (int t = 0;t < arr.length;t++) {
for (int z = 0;z < arr[t].length;z++) {
// 这里的条件是三维数组里的二维数组
for (int y = 0;y < arr[t][z].length;y++) {
// 这里的条件是三维数组里的二维数组里的一维数组
for (int x = 0;x < arr[t][z][y].length;x++) {
// 直接从三维数组中获取对应二维数组的一维数组的值
System.out.println(arr[t][z][y][x]);
}
}
}
}
}
}
运行结果如下
总结
多维数组其实就是在之前的维度上新增一个维度.
比如一维数组加一维成了二维数组,二维数组存一维