之前我们提到过,数组其实就是一个更大的容器,其中的每个元素都可以当作变量,用来存储其他的数据,例如,我们可以把10这个数据存进变量a中:
int a = 10;
但如果我们想把这个10存在数组里,我们也可写作:
int[] a = new int[5];
a[0]=10;
这样10这个数据就存储在数组的第一个元素中了。
除此以外我们也知道,变量可以存储数据,而数组又可以存储变量,即:
int num1=10;
int num2=20;
int[] nums = new int[5];
int[0] = num1;
int[1] = num2;
既然如此,我们可不可以把一个存储着数组类型的变量再存进数组当中作为一个元素呢?
当然可以了,写作:
int[][] nums = new int[3][4] ;
这就代表着我们创建了一个大数组(第一维度的数组),他有着3个元素,而每一个元素又都存储着另一个数组的引用地址,所以JVM中又在堆中创建了新的3个数组,这新的3个数组中每一个数组都有着4个元素。
我们可以把它理解成创建了一个 3 * 4的矩阵:
上面的代码中,我们直接创建了三个长度为四的数组,如果我们不想让这些数组长度相同,也可以这样赋值:
int[][] nums = new int[3][] ;
nums[0] = new int[4] ;
nums[1] = new int[5] ;
nums[2] = new int[6] ;
这样3个长度不一的数组就创建成功了。
当然了二维数组我们也可以对其进行静态初始化,即:
int[][] nums = new int[][]{ {1,2} , {1,2,3} , {1,2,3,4} };
代表我们创建了三个数组,并依次对三个数组中的元素进行了赋值。
比方说现在我们输出nums[1][2],就代表我们想要输出第二个数组中的第三个元素,结果为3
或者我们也可以这样创建一个数组:
int[][] nums = new int[][]{ null , null , null };
这样就只代表了我们创建了三个数组,但每个数组都没有值我,我们就给了他一个默认值null,我们称之为空,代表没有。
在Java中,我们的变量如果不赋值的话就都会有一个默认值,如果这个变量是基本类型的,代表它可以进入栈空间,如果是引用类型的,则代表它将会存在堆空间中,栈空间的默认值为0,而堆空间的默认值就是null。
明白了二维数组其实多维数组也就好理解了,二维数组就是把原本一维数组存储数据的地方又存了一个数组进去,那么三维数组实际上就是把二维数组存储元素的地方也存进数组,即:
上图就是一个简易的示意图了,代表着nums[3][4][2]这样的一个三维数组。
更多维度的数组无非就是再向其中存入更多的数组。
最后再给大家留给小练习,利用循环以及Sacnner 为二维数组的每个元素手动赋值,下期文章我会为大家进行讲解。
那么今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~