public void test1(){
String[] str=new String[4];
str[0]="cat";
str[1]="dog";
str[2]="pig";
str[3]="bird";
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
public void test2(){
String[][] str=new String[2][3];
str[0][0]="1";
str[0][1]="2";
str[0][2]="3";
str[1][0]="4";
str[1][1]="5";
str[1][2]="6";
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str[i].length; j++) {
System.out.println(str[i][j]);
}
}
}
public void test3(){
String[][][] str=new String[3][4][2];
str[0][0][0]="1";
str[0][0][1]="2";
str[0][1][0]="3";
str[0][1][1]="4";
str[0][2][0]="5";
str[0][2][1]="6";
str[0][3][0]="7";
str[0][3][1]="8";
str[1][0][0]="9";
str[1][0][1]="10";
str[1][1][0]="11";
str[1][1][1]="12";
str[1][2][0]="13";
str[1][2][1]="14";
str[1][3][0]="15";
str[1][3][1]="16";
str[2][0][0]="17";
str[2][0][1]="18";
str[2][1][0]="19";
str[2][1][1]="20";
str[2][2][0]="21";
str[2][2][1]="22";
str[2][3][0]="23";
str[2][3][1]="24";
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str[i].length; j++) {
for (int j2 = 0; j2 < str[i][j].length; j2++) {
System.out.println(str[i][j][j2]);
}
}
}
}
从中不难发现多维数组的规律.
1.首先是数量的规律:一维数组的数量是自身,二维数组是第一维乘以第二维,三维数组是三维相乘,由此可知n维便是n维上各自的数字相乘;
2.其次便是具体的定义:由于具体解释起来比较复杂,便通过实例来解释;首先根据第一个提出的数量规律把数组的数量确定,同时写好其对应的框架,比如:
四维数组:String[][][][] str=new String[2][2][2][2];
这里可以得出数组的数量为(2*2*2*2=)16;
其框架便为:str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";str[][][][]="";
框架搭好后便可以为具体的维的下标填值,首先是第一维;由于第一维的数量是2,因此便可以在总数的基础上均分,0和1各占8位:str[0][][][]="";str[0][][][]="";str[0][][][]="";str[0][][][]="";str[0][][][]="";str[0][][][]="";str[0][][][]="";str[0][][][]="";str[1][][][]="";str[1][][][]="";str[1][][][]="";str[1][][][]="";str[1][][][]="";str[1][][][]="";str[1][][][]="";str[1][][][]="";
然后是第二维;而它便是在第一维的基础上进行均分,0和1对一维的0的占位数进行均分,又再对一维的1的占位数进行均分:str[0][0][][]="";str[0][0][][]="";str[0][0][][]="";str[0][0][][]="";str[0][1][][]="";str[0][1][][]="";str[0][1][][]="";str[0][1][][]="";str[1][0][][]="";str[1][0][][]="";str[1][0][][]="";str[1][0][][]="";str[1][1][][]="";str[1][1][][]="";str[1][1][][]="";str[1][1][][]="";
再然后第三维的0和1就是在第二维的基础上继续均分,先均分二维第一个0和第一个1,然后是第二个0和第二个1,以此类推:str[0][0][0][]="";str[0][0][0][]="";str[0][0][1][]="";str[0][0][1][]="";str[0][1][0][]="";str[0][1][0][]="";str[0][1][1][]="";str[0][1][1][]="";str[1][0][0][]="";str[1][0][0][]="";str[1][0][1][]="";str[1][0][1][]="";str[1][1][0][]="";str[1][1][0][]="";str[1][1][1][]="";str[1][1][1][]="";
剩下的第四维便以此类推即可:str[0][0][0][0]="";str[0][0][0][1]="";str[0][0][1][0]="";str[0][0][1][1]="";str[0][1][0][0]="";str[0][1][0][1]="";str[0][1][1][0]="";str[0][1][1][1]="";str[1][0][0][0]="";str[1][0][0][1]="";str[1][0][1][0]="";str[1][0][1][1]="";str[1][1][0][0]="";str[1][1][0][1]="";str[1][1][1][0]="";str[1][1][1][1]="";
同理,如果第n维的数字是m就在n-1维的基础上进行同理的均分m次即可(第1维是在数组总数的基础上进行均分)。
然后遍历的方式比较简单,多少维就套多少个for循环即可,至于for循环循环的次数则是对应维的上一维的长度
,具体写法根据以上示例应该可以理解;
写的方法大概就是这样,至于具体的理解就要靠自己体会了;其实我一直觉得几个示列就可以看懂的,但由于一些原因强行乱解释了一波。