[Java教程]18.多维数组

Java教程专栏:https://blog.csdn.net/qq_41806966/category_9929686.html

hello,I'm shendi

本节学习多维数组


目录

多维数组的概念

二维数组

三维数组

四维数组

总结


多维数组的概念

我们之前学的数组都是一位数组(一个维度),那么自然就有两个维度,三个维度的数组

至于可以到多少维(可以无限扩展)

那么,什么是多维数组?

我们拿坐标轴来举栗子

都知道,一维空间是一个维度的,只有一个坐标---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]);
					}
				}
			}
		}
	}
	
}

运行结果如下

总结

多维数组其实就是在之前的维度上新增一个维度.

比如一维数组加一维成了二维数组,二维数组存一维

三维数组存二维数组,四维存三维...

甚至有五维,六维,七维....

猜你喜欢

转载自blog.csdn.net/qq_41806966/article/details/107189496
18.