测试小站: 处理网 回收帮 培训网 富贵论坛 老富贵论坛

JAVA数组以及多维数组实例讲解

  数组

  一.通常情况下提到的数组多为一维数组,以下代码即为它的定义方式与遍历方式:

  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]);

  }

  }

  二.而多维数组先对来说较为复杂,先来几个例子:

  1.二维数组:

  public void test2(){

  String[][] str=new String[2][3];

  str[0][1]="1";

  str[0][2]="2";

  str[0][3]="3";

  str[1][1]="4";

  str[1][2]="5";

  str[1][3]="6";

  for (int i=0; i < str.length; i++) {

  for (int j=0; j < str[i].length; j++) {

  System.out.println(str[i][j]);

  }

  }

  }

  2.三维数组:

  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循环循环的次数则是对应维的上一维的长度

  ,具体写法根据以上示例应该可以理解;

  写的方法大概就是这样,至于具体的理解就要靠自己体会了;其实我一直觉得几个示列就可以看懂的,但由于同学的原因强行乱解释了一波。

posted @ 2021-12-21 14:12  linjingyg  阅读(218)  评论(0)    收藏  举报