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

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

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

猜你喜欢

转载自blog.csdn.net/imjavaxb/article/details/80258963