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

二維數(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.png
 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ù)沒有給出兜粘,可以動(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.png

二維數(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.png

遍歷二維數(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ù)組求和

/*
    公司年銷售額求和
    某公司按照季度和月份統(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("一年的銷售額為:"+sum+"萬(wàn)元");
    }
}

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

image.png
/*

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

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

class Array2Test3 {
    public static void main(String[] args) {
        //創(chuàng)建鍵盤錄入對(duì)象
        Scanner sc = new Scanner(System.in);
        
        //這個(gè)n的數(shù)據(jù)來(lái)自于鍵盤錄入禁荸。
        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ī)律給其他元素賦值
        //從第三行開始,每一個(gè)數(shù)據(jù)是它上一行的前一列和它上一行的本列之和阀湿。
        for(int x=2; x<arr.length; x++) {
            //這里如果y<=x是有個(gè)小問(wèn)題的赶熟,就是最后一列的問(wèn)題
            //所以這里要減去1
            //并且y也應(yīng)該從1開始,因?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)系作者
  • 序言:七十年代末灾挨,一起剝皮案震驚了整個(gè)濱河市邑退,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劳澄,老刑警劉巖地技,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秒拔,居然都是意外死亡莫矗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門砂缩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)作谚,“玉大人,你說(shuō)我怎么就攤上這事庵芭∶美粒” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵双吆,是天一觀的道長(zhǎng)眨唬。 經(jīng)常有香客問(wèn)我滔悉,道長(zhǎng),這世上最難降的妖魔是什么单绑? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮曹宴,結(jié)果婚禮上搂橙,老公的妹妹穿的比我還像新娘。我一直安慰自己笛坦,他們只是感情好区转,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著版扩,像睡著了一般废离。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上礁芦,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天蜻韭,我揣著相機(jī)與錄音,去河邊找鬼柿扣。 笑死肖方,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的未状。 我是一名探鬼主播俯画,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼司草!你這毒婦竟也來(lái)了艰垂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤埋虹,失蹤者是張志新(化名)和其女友劉穎猜憎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吨岭,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拉宗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辣辫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旦事。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖急灭,靈堂內(nèi)的尸體忽然破棺而出姐浮,到底是詐尸還是另有隱情,我是刑警寧澤葬馋,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布卖鲤,位于F島的核電站肾扰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛋逾。R本人自食惡果不足惜集晚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望区匣。 院中可真熱鬧偷拔,春花似錦、人聲如沸亏钩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)姑丑。三九已至蛤签,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栅哀,已是汗流浹背震肮。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留留拾,地道東北人钙蒙。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像间驮,于是被迫代替她去往敵國(guó)和親躬厌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容