关于数组的个人理解
2015-10-02 20:50
330 查看
这是今天我在思考问题的时候理解到的关于三维数组甚至多维数组的理解。
我在网上看了很多,有很多种思维。
第一种理解思维:
一维可以理解成“由点堆积成的线”
二维可以理解成“由线堆积成的正方形”
三维可以理解成“由正方形堆积成的正方体”
四维可以理解成“由正方体堆积成的超立方体”
但是我认为这种理解虽然前面一目了然,但是到了多维数组的时候,理解有点抽象(原谅我脑子想象力不足),这种是用维度的世界来理解的,由于我们所处的是三维的世界,所以多维的想象不出来(因为认识度不够)。
比如如果纸有思想的话,他就会以为这是个二维的世界,而我们就会认为这是个三维的世界。
具体参照 百度百科
第二种思维:
一维数组就象一行字。
二维数组就象一页字。
三维数组就象一本书中的字。
四维数组就象一套书中的字。
五维数组就象书柜中多套书中的字。
六维数组就象图书馆中多个书柜多套书中的字。
七维数组是一个省中的所有图书馆藏书中的字。
八维数组是一个城市的所有图书馆藏书中的字。
九维数组是一个国家的所有图书馆藏书中的字。
十维数组是一个洲所有国家的图书馆藏书中的字。
十一维数组是地球上所有国家的图书馆藏书中的字。
这是很现实的例子,很好理解,也能轻松理解多维,感觉有点包含、属于,然后由多个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
4000
");
}
}
}
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();
}
}
}
当数组定义之后,所有的数组元素都将分配到地址空间。由于大量占有内存的关系,二维或更多维数组较少使用。
在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();
}
}
}
我在网上看了很多,有很多种思维。
第一种理解思维:
一维可以理解成“由点堆积成的线”
二维可以理解成“由线堆积成的正方形”
三维可以理解成“由正方形堆积成的正方体”
四维可以理解成“由正方体堆积成的超立方体”
但是我认为这种理解虽然前面一目了然,但是到了多维数组的时候,理解有点抽象(原谅我脑子想象力不足),这种是用维度的世界来理解的,由于我们所处的是三维的世界,所以多维的想象不出来(因为认识度不够)。
比如如果纸有思想的话,他就会以为这是个二维的世界,而我们就会认为这是个三维的世界。
具体参照 百度百科
第二种思维:
一维数组就象一行字。
二维数组就象一页字。
三维数组就象一本书中的字。
四维数组就象一套书中的字。
五维数组就象书柜中多套书中的字。
六维数组就象图书馆中多个书柜多套书中的字。
七维数组是一个省中的所有图书馆藏书中的字。
八维数组是一个城市的所有图书馆藏书中的字。
九维数组是一个国家的所有图书馆藏书中的字。
十维数组是一个洲所有国家的图书馆藏书中的字。
十一维数组是地球上所有国家的图书馆藏书中的字。
这是很现实的例子,很好理解,也能轻松理解多维,感觉有点包含、属于,然后由多个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
4000
");
}
}
}
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();
}
}
}
相关文章推荐
- PHP 多维数组排序实现代码
- 改写函数实现PHP二维/三维数组转字符串
- php中多维数组按指定value排序的实现代码
- java中数组的应用及方法
- Python 初始化多维数组代码
- php实现在多维数组中查找特定value的方法
- JavaScript实现多维数组的方法
- 下标操作符重载模拟多维数组详解
- Java数组声明、创建、初始化基础
- php用递归将多维数组所有的键名都改为大写或者小写
- 数组与内存控制
- C5-二维数组、字符串数组、多维数组
- 数组
- java数组基本的排序方法
- Java数组技巧
- 多维数组a[x][y]的指针操作及ptr+1 a+1和&a+1区别
- 黑马程序员_日记2--Java数组
- Java数组的概念
- java数组笔记
- Java -数组-String字符串