Java 二維數(shù)組格式、二維數(shù)組內(nèi)存圖解、二維數(shù)組操作

<pre>

二維數(shù)組格式1

/*
    二維數(shù)組:就是元素為一維數(shù)組的一個(gè)數(shù)組。

    格式1:
        數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[m][n];

        m:表示這個(gè)二維數(shù)組有多少個(gè)一維數(shù)組。
        n:表示每一個(gè)一維數(shù)組的元素有多少個(gè)。

    注意:
        A:以下格式也可以表示二維數(shù)組
            a:數(shù)據(jù)類型 數(shù)組名[][] = new 數(shù)據(jù)類型[m][n];
            b:數(shù)據(jù)類型[] 數(shù)組名[] = new 數(shù)據(jù)類型[m][n];
        B:注意下面定義的區(qū)別
            int x;
            int y;
            int x,y;

            int[] x;
            int[] y[];

            int[] x,y[];//這個(gè)x是一維數(shù)組,y是二維數(shù)組
*/
class Array2Demo {
    public static void main(String[] args) {
         //定義一個(gè)二維數(shù)組
         int[][] arr = new int[3][2];
         //定義了一個(gè)二維數(shù)組arr
         //這個(gè)二維數(shù)組有3個(gè)一維數(shù)組的元素
         //每一個(gè)一維數(shù)組有2個(gè)元素
         //輸出二維數(shù)組名稱
         System.out.println(arr); //地址值    [[I@175078b
         //輸出二維數(shù)組的第一個(gè)元素一維數(shù)組的名稱
         System.out.println(arr[0]); //地址值    [I@42552c
         System.out.println(arr[1]); //地址值    [I@e5bbd6
         System.out.println(arr[2]); //地址值    [I@8ee016
         //輸出二維數(shù)組的元素
         System.out.println(arr[0][0]); //0
         System.out.println(arr[0][1]); //0
    }
}

格式1內(nèi)存圖解

image
 public static void main(String[] args) {
    // write your code here

//        int[] array = new int[10];
//        for(int i = 0; i< array.length;i++)
//        {
//            array[i] = i+1;
//        }
//
//        for(int i = 0; i< array.length;i++)
//        {
//            System.out.println(array[i]);
//        }

        int[][] array = new int[3][2];
        //任何一個(gè)二維數(shù)組都可以看成一個(gè)一維數(shù)組(數(shù)組中每一個(gè)元素又是一個(gè)數(shù)組)
//        System.out.println(array.length);//看成的一維數(shù)組的長(zhǎng)度
//        System.out.println(array[0].length);

        array[0][0] = 1;
        array[0][1] = 2;

        array[1][0] = 3;
        array[1][1] = 4;

        array[2][0] = 5;
        array[2][1] = 6;

        for(int i = 0; i<array.length;i++)
        {
            for(int j = 0; j< array[i].length; j++)
            {
                System.out.println(array[i][j]);
            }
        }

    }

二維數(shù)組格式2

/*
    格式2:
        數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[m][];

        m:表示這個(gè)二維數(shù)組有多少個(gè)一維數(shù)組。
        列數(shù)沒(méi)有給出,可以動(dòng)態(tài)的給。這一次是一個(gè)變化的列數(shù)。
*/
class Array2Demo2 {
    public static void main(String[] args) {
        //定義數(shù)組
        int[][] arr = new int[3][];

        System.out.println(arr);    //[[I@175078b
        System.out.println(arr[0]); //null
        System.out.println(arr[1]); //null
        System.out.println(arr[2]); //null

        //動(dòng)態(tài)的為每一個(gè)一維數(shù)組分配空間
        arr[0] = new int[2];
        arr[1] = new int[3];
        arr[2] = new int[1];

        System.out.println(arr[0]); //[I@42552c
        System.out.println(arr[1]); //[I@e5bbd6
        System.out.println(arr[2]); //[I@8ee016

        System.out.println(arr[0][0]); //0
        System.out.println(arr[0][1]); //0
        //ArrayIndexOutOfBoundsException
        //System.out.println(arr[0][2]); //錯(cuò)誤

        arr[1][0] = 100;
        arr[1][2] = 200;
    }
}

二維數(shù)組格式2 內(nèi)存圖解

image

二維數(shù)組格式3

/*
    格式3:
        基本格式:
            數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};
        簡(jiǎn)化版格式:
            數(shù)據(jù)類型[][] 數(shù)組名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}};

        舉例:
            int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
            int[][] arr = {{1,2,3},{4,5},{6}};
*/
class Array2Demo3 {
    public static void main(String[] args) {
        //定義數(shù)組
        int[][] arr = {{1,2,3},{4,5},{6}};

        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);

        System.out.println(arr[0][0]); //1
        System.out.println(arr[1][0]); //4
        System.out.println(arr[2][0]); //6

        System.out.println(arr[0][1]); //2
        System.out.println(arr[1][1]); //5
        //越界
        System.out.println(arr[2][1]); //錯(cuò)誤
    }
}

二維數(shù)組格式3 內(nèi)存圖解

image

遍歷二維數(shù)組

/*
    需求:二維數(shù)組遍歷

    外循環(huán)控制的是二維數(shù)組的長(zhǎng)度,其實(shí)就是一維數(shù)組的個(gè)數(shù)。
    內(nèi)循環(huán)控制的是一維數(shù)組的長(zhǎng)度。
*/
class Array2Test {
    public static void main(String[] args) {
        //定義一個(gè)二維數(shù)組
        int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

        //用方法改進(jìn)
        //調(diào)用方法
        printArray2(arr);
    }    

    /*
        需求:遍歷二維數(shù)組
        兩個(gè)明確:
            返回值類型:void
            參數(shù)列表:int[][] arr
    */
    public static void printArray2(int[][] arr) {
        for(int x=0; x<arr.length; x++) {
            for(int y=0; y<arr[x].length; y++) {
                System.out.print(arr[x][y]+" ");
            }
            System.out.println();
        }
    }
}

二維數(shù)組求和

/*
    公司年銷(xiāo)售額求和
    某公司按照季度和月份統(tǒng)計(jì)的數(shù)據(jù)如下:?jiǎn)挝?萬(wàn)元)
    第一季度:22,66,44
    第二季度:77,33,88
    第三季度:25,45,65
    第四季度:11,66,99

    分析:
        A:把題目的數(shù)據(jù)用二維數(shù)組來(lái)表示
            int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
        B:如何求和呢?
            求和其實(shí)就是獲取到每一個(gè)元素,然后累加即可。
        C:定義一個(gè)求和變量sum,初始化值是0。
        D:通過(guò)遍歷就可以得到每一個(gè)二維數(shù)組的元素。
        E:把元素累加即可。
        F:最后輸出sum,就是結(jié)果。
*/
class Array2Test2 {
    public static void main(String[] args) {
        //把題目的數(shù)據(jù)用二維數(shù)組來(lái)表示
        int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};

        //定義一個(gè)求和變量sum,初始化值是0。
        int sum = 0;

        //通過(guò)遍歷就可以得到每一個(gè)二維數(shù)組的元素。
        for(int x=0; x<arr.length; x++) {
            for(int y=0; y<arr[x].length; y++) {
                //把元素累加即可。
                sum += arr[x][y];
            }
        }

        //最后輸出sum,就是結(jié)果。
        System.out.println("一年的銷(xiāo)售額為:"+sum+"萬(wàn)元");
    }
}

二維數(shù)組樹(shù)出楊輝三角:打印楊輝三角形(行數(shù)可以鍵盤(pán)錄入)

image
/*

    需求:打印楊輝三角形(行數(shù)可以鍵盤(pán)錄入)
    1 1    
2 1
3 3 1
4 6 4 1 
5 10 10 5 1

    分析:看這種圖像的規(guī)律
        A:任何一行的第一列和最后一列都是1
        B:從第三行開(kāi)始,每一個(gè)數(shù)據(jù)是它上一行的前一列和它上一行的本列之和。

    步驟:
        A:首先定義一個(gè)二維數(shù)組。行數(shù)如果是n,我們把列數(shù)也先定義為n。
          這個(gè)n的數(shù)據(jù)來(lái)自于鍵盤(pán)錄入。
        B:給這個(gè)二維數(shù)組任何一行的第一列和最后一列賦值為1
        C:按照規(guī)律給其他元素賦值
            從第三行開(kāi)始,每一個(gè)數(shù)據(jù)是它上一行的前一列和它上一行的本列之和。
        D:遍歷這個(gè)二維數(shù)組。
*/
import java.util.Scanner;

class Array2Test3 {
    public static void main(String[] args) {
        //創(chuàng)建鍵盤(pán)錄入對(duì)象
        Scanner sc = new Scanner(System.in);

        //這個(gè)n的數(shù)據(jù)來(lái)自于鍵盤(pán)錄入。
        System.out.println("請(qǐng)輸入一個(gè)數(shù)據(jù):");
        int n = sc.nextInt();

        //定義二維數(shù)組
        int[][] arr = new int[n][n];

        //給這個(gè)二維數(shù)組任何一行的第一列和最后一列賦值為1
        for(int x=0; x<arr.length; x++) {
            arr[x][0] = 1; //任何一行第1列
            arr[x][x] = 1; //任何一行的最后1列
        }

        //按照規(guī)律給其他元素賦值
        //從第三行開(kāi)始,每一個(gè)數(shù)據(jù)是它上一行的前一列和它上一行的本列之和。
        for(int x=2; x<arr.length; x++) {
            //這里如果y<=x是有個(gè)小問(wèn)題的,就是最后一列的問(wèn)題
            //所以這里要減去1
            //并且y也應(yīng)該從1開(kāi)始,因?yàn)榈谝涣幸彩怯兄盗?            for(int y=1; y<=x-1; y++) {
                //每一個(gè)數(shù)據(jù)是它上一行的前一列和它上一行的本列之和。
                arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
            }
        }

        //這個(gè)時(shí)候,要注意了,內(nèi)循環(huán)的變化必須和曾經(jīng)講過(guò)的九九乘法表類似
        for(int x=0; x<arr.length; x++) {
            for(int y=0; y<=x; y++) {
                System.out.print(arr[x][y]+"\t");
            }
            System.out.println();
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容