Java二維數(shù)組講解
前言
一、二維數(shù)組的應(yīng)用場(chǎng)景
二、二維數(shù)組的初始化 1.靜態(tài)初始化
1.靜態(tài)初始化
簡(jiǎn)化格式最好使用紅色框里面的,因?yàn)樵诎⒗锇桶蚃ava開(kāi)發(fā)手冊(cè)中有這樣的規(guī)定:
public class TwoDimensionDemo1 { public static void main(String[] args) { //1.二維數(shù)組初始化 int[][] arr1=new int[][]{{1,2,3},{4,5,6,7,8}}; int[][] arr2={{1,2,3},{4,5,6,7,8}}; int[][] arr3={ {1,2,3}, {4,5,6,7,8} }; //以后建議像arr3這樣初始化,把每一個(gè)一維數(shù)組,單獨(dú)寫(xiě)成一行 //注意:每一個(gè)一維數(shù)組其實(shí)是二維數(shù)組中的元素,所以每一個(gè)一維數(shù)組之間需要用逗號(hào)隔開(kāi),最后一個(gè)一維數(shù)組后面不需要 //2.獲取元素 //arr[i][j] //arr:二維數(shù)組 //i:二維數(shù)組的索引,獲取出來(lái)的是里面的一維數(shù)組 //j:表示一維數(shù)組中的索引,獲取出來(lái)是真正的元素 System.out.println(arr3[0]); //表示獲取二維數(shù)組中的第一個(gè)一維數(shù)組,得出的結(jié)果是二維數(shù)組中的第一個(gè)一維數(shù)組的地址 //arr3[0]:二維數(shù)組中的第一個(gè)一維數(shù)組 //arr3[0][0]:獲取第一個(gè)一維數(shù)組0索引的元素 System.out.println(arr3[0][0]); //打印數(shù)字8 System.out.println(arr3[1][4]); //arr3數(shù)組中沒(méi)有2索引,下面一行的代碼會(huì)報(bào)錯(cuò) // System.out.println(arr3[2][0]); //3.二維數(shù)組的遍歷 for (int i = 0; i < arr3.length; i++) { //i:表示二維數(shù)組中的每一個(gè)索引 //arr3[i]:表示二維數(shù)組中的每一個(gè)元素(一維數(shù)組) for (int j = 0; j < arr3[i].length; j++) { System.out.println(arr3[i][j]); } } //每個(gè)一維數(shù)組單獨(dú)打印在一行 //外循環(huán):遍歷二維數(shù)組,得到里面的每一個(gè)一維數(shù)組 //內(nèi)循環(huán):遍歷一維數(shù)組,得到里面的每一個(gè)元素 for (int i = 0; i < arr3.length; i++) { //i:表示二維數(shù)組中的每一個(gè)索引 //arr3[i]:表示二維數(shù)組中的每一個(gè)元素(一維數(shù)組) for (int j = 0; j < arr3[i].length; j++) { System.out.print(arr3[i][j]+" "); } System.out.println(); } } }
2.動(dòng)態(tài)初始化
public class TwoDimensionDemo2 { public static void main(String[] args) { //1.利用動(dòng)態(tài)初始化格式創(chuàng)建二維數(shù)組 int[][]arr1=new int[3][5]; //3:表示二維數(shù)組的長(zhǎng)度為3,可以裝3個(gè)一維數(shù)組 //5:表示每一個(gè)一維數(shù)組的長(zhǎng)度都是5,可以裝5個(gè)int類(lèi)型的元素 //2.給二維數(shù)組賦值一個(gè)元素 arr1[0][0]=10; //3.遍歷二維數(shù)組 //外循環(huán):遍歷二維數(shù)組獲取里面的每一個(gè)一維數(shù)組 //內(nèi)循環(huán):遍歷一維數(shù)組獲取里面的每一個(gè)元素 for (int i = 0; i < arr1.length; i++) { for (int j = 0; j < arr1[i].length; j++) { System.out.print(arr1[i][j]+" "); } System.out.println(); } } }
三、二維數(shù)組的內(nèi)存圖
1.特殊情況1的寫(xiě)法:
(知道就好,不需要重點(diǎn)掌握)
(上圖中的代碼int[ ][ ] arr=new int[2][ ];2表示二維數(shù)組長(zhǎng)度為2,表示在堆內(nèi)存中只創(chuàng)建了一個(gè)二維數(shù)組,沒(méi)有創(chuàng)建一維數(shù)組)
則需要手動(dòng)創(chuàng)建一維數(shù)組:
再把一維數(shù)組的地址值添加給二維數(shù)組:
把a(bǔ)rr1賦值給arr的0索引
把a(bǔ)rr2賦值給arr的1索引
特殊情況1的寫(xiě)法的好處:
自己創(chuàng)建一維數(shù)組,比較靈活,二維數(shù)組里面的每一個(gè)一維數(shù)組想創(chuàng)建多長(zhǎng)就創(chuàng)建多長(zhǎng)
如果是java創(chuàng)建一維數(shù)組,在初始化的時(shí)候創(chuàng)建的每一個(gè)一維數(shù)組的長(zhǎng)度都是一樣的
2.特殊情況2的寫(xiě)法
首先是按照標(biāo)準(zhǔn)的形式創(chuàng)建了一個(gè)二維數(shù)組
然后在下面又創(chuàng)建了兩個(gè)一維數(shù)組
并且進(jìn)行了添加
那么原來(lái)堆內(nèi)存中的右側(cè)的兩個(gè)數(shù)組的地址值被覆蓋了,它們沒(méi)人用了,從而變成垃圾,就會(huì)從堆內(nèi)存中消失
四、二維數(shù)組的練習(xí)題
public class TwoDimensionDemo3 { public static void main(String[] args) { //1.創(chuàng)建二維數(shù)組并存儲(chǔ)數(shù)據(jù) //已經(jīng)知道數(shù)據(jù)用靜態(tài)初始化 int[][] yearArrArr={ {22,66,44}, {77,33,88}, {25,45,65}, {11,66,99} }; //表示全年的營(yíng)業(yè)額 int yearSum=0; //2.遍歷二維數(shù)組得到每一個(gè)一維數(shù)組并求和 for (int i = 0; i < yearArrArr.length; i++) { //i 二維數(shù)組中的每一個(gè)索引 //yearArrArr[i] 元素(一維數(shù)組) int[] quarterArr=yearArrArr[i]; int sum=getSum(quarterArr); System.out.println("第"+(i+1)+"個(gè)季度的總營(yíng)業(yè)額為"+sum); yearSum=yearSum+sum; } System.out.println("全年的營(yíng)業(yè)額為:"+yearSum); } //定義一個(gè)方法,計(jì)算每一個(gè)季度的營(yíng)業(yè)額 public static int getSum(int[] arr){ int sum=0; for (int i = 0; i < arr.length; i++) { sum=sum+arr[i]; } return sum; } }
總結(jié)
今天的內(nèi)容你是否有所收獲呢友友們??如果有寫(xiě)的不對(duì)的地方,歡迎大家?guī)臀抑刚?最后,希望友友們點(diǎn)贊收藏一下
以上就是Java二維數(shù)組講解的詳細(xì)內(nèi)容,更多關(guān)于Java二維數(shù)組的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java如何將二維數(shù)組轉(zhuǎn)化為一維數(shù)組
- Java中的二維數(shù)組的賦值與輸出方式
- Java基礎(chǔ)語(yǔ)法之二維數(shù)組詳解
- Java用Arrays.fill()初始化二維數(shù)組的實(shí)現(xiàn)
- Java二維數(shù)組與動(dòng)態(tài)數(shù)組ArrayList類(lèi)詳解
- Java不指定長(zhǎng)度的二維數(shù)組實(shí)例
- Java編程一維數(shù)組轉(zhuǎn)換成二維數(shù)組實(shí)例代碼
- java實(shí)現(xiàn)二維數(shù)組轉(zhuǎn)json的方法示例
相關(guān)文章
java數(shù)據(jù)結(jié)構(gòu)之java實(shí)現(xiàn)棧
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)棧,需要的朋友可以參考下2014-03-03一文帶你探究Spring中Bean的線(xiàn)程安全性問(wèn)題
很多人都想spring中的bean是線(xiàn)程安全的嗎?本文將帶你探究Spring中Bean的線(xiàn)程安全性問(wèn)題,感興趣的同學(xué)可以參考閱讀下2023-05-05高并發(fā)下如何避免重復(fù)數(shù)據(jù)產(chǎn)生技巧
這篇文章主要為大家介紹了高并發(fā)下如何避免重復(fù)數(shù)據(jù)的產(chǎn)生技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07SpringBoot+vue+Axios實(shí)現(xiàn)Token令牌的詳細(xì)過(guò)程
Token是在服務(wù)端產(chǎn)生的,前端可以使用用戶(hù)名/密碼向服務(wù)端請(qǐng)求認(rèn)證(登錄),服務(wù)端認(rèn)證成功,服務(wù)端會(huì)返回?Token?給前端,Token可以使用自己的算法自定義,本文給大家介紹SpringBoot+vue+Axios實(shí)現(xiàn)Token令牌,感興趣的朋友一起看看吧2023-10-10springboot實(shí)現(xiàn)執(zhí)行sql語(yǔ)句打印到控制臺(tái)
這篇文章主要介紹了springboot實(shí)現(xiàn)執(zhí)行sql語(yǔ)句打印到控制臺(tái)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06