这是今天我在思考问题的时候理解到的关于三维数组甚至多维数组的理解。
我在网上看了很多,有很多种思维。
第一种理解思维:
一维可以理解成“由点堆积成的线”
二维可以理解成“由线堆积成的正方形”
三维可以理解成“由正方形堆积成的正方体”
四维可以理解成“由正方体堆积成的超立方体”
但是我认为这种理解虽然前面一目了然,但是到了多维数组的时候,理解有点抽象(原谅我脑子想象力不足),这种是用维度的世界来理解的,由于我们所处的是三维的世界,所以多维的想象不出来(因为认识度不够)。
比如如果纸有思想的话,他就会以为这是个二维的世界,而我们就会认为这是个三维的世界。
具体参照 百度百科
第二种思维:
一维数组就象一行字。
二维数组就象一页字。
三维数组就象一本书中的字。
四维数组就象一套书中的字。
五维数组就象书柜中多套书中的字。
六维数组就象图书馆中多个书柜多套书中的字。
七维数组是一个省中的所有图书馆藏书中的字。
八维数组是一个城市的所有图书馆藏书中的字。
九维数组是一个国家的所有图书馆藏书中的字。
十维数组是一个洲所有国家的图书馆藏书中的字。
十一维数组是地球上所有国家的图书馆藏书中的字。
这是很现实的例子,很好理解,也能轻松理解多维,感觉有点包含、属于,然后由多个n维数组来集成一个n+1维数组。
最后就是通过代码来理解:
class OneDimensionalArray //一维数组的输出
{
public static void main(String[] args)
{
int[] a={
1,2,3
};
for (int y=0;y<a.length;y++)
{
System.out.print(a[y]+"\t");
}
}
}
class TwoDimensionalArray //二维数组的输出
{
public static void main(String[] args)
{
int[][] a={
{1,2,3},
{4,5,6}
};
for (int x=0;x<a.length;x++)
{
for (int y=0;y<a[x].length;y++)
{
System.out.print(a[x][y]+"\t");
}
System.out.println();
}
}
}
class ThreeDimensionalArray //三维数组的输出
{
public static void main(String[] args)
{
int[][][] a={
{
{1,2,3},
{4,5,6} },
{
{7,8,9},
{10,11,12} },
{
{13,14,15},
{16,17,18} }
};
for (int x=0;x<a.length;x++)
{
for (int y=0;y<a[x].length;y++)
{
for (int z=0;z<a[x][y].length;z++)
{
System.out.print(a[x][y][z]+"\t");
}
System.out.println();
}
System.out.println();
}
}
}
当数组定义之后,所有的数组元素都将分配到地址空间。由于大量占有内存的关系,二维或更多维数组较少使用。
在java中的数组可以不用定义列的宽度,也就是不用像C一样是个矩形。
举个上面二维数组输出的例子:
class TwoDimensionalArray //二维数组的输出
{
public static void main(String[] args)
{
int[][] a={
{1,2,3}, //这里可以根据需要定义相同或不同的列宽
{4,5,6,7,8},
{9,10}
};
for (int x=0;x<a.length;x++)
{
for (int y=0;y<a[x].length;y++)
{
System.out.print(a[x][y]+"\t");
}
System.out.println();
}
}
}