Java二維數(shù)組講解
前言
一、二維數(shù)組的應(yīng)用場景



二、二維數(shù)組的初始化 1.靜態(tài)初始化
1.靜態(tài)初始化

簡化格式最好使用紅色框里面的,因為在阿里巴巴Java開發(fā)手冊中有這樣的規(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這樣初始化,把每一個一維數(shù)組,單獨寫成一行
//注意:每一個一維數(shù)組其實是二維數(shù)組中的元素,所以每一個一維數(shù)組之間需要用逗號隔開,最后一個一維數(shù)組后面不需要
//2.獲取元素
//arr[i][j]
//arr:二維數(shù)組
//i:二維數(shù)組的索引,獲取出來的是里面的一維數(shù)組
//j:表示一維數(shù)組中的索引,獲取出來是真正的元素
System.out.println(arr3[0]); //表示獲取二維數(shù)組中的第一個一維數(shù)組,得出的結(jié)果是二維數(shù)組中的第一個一維數(shù)組的地址
//arr3[0]:二維數(shù)組中的第一個一維數(shù)組
//arr3[0][0]:獲取第一個一維數(shù)組0索引的元素
System.out.println(arr3[0][0]);
//打印數(shù)字8
System.out.println(arr3[1][4]);
//arr3數(shù)組中沒有2索引,下面一行的代碼會報錯
// System.out.println(arr3[2][0]);
//3.二維數(shù)組的遍歷
for (int i = 0; i < arr3.length; i++) {
//i:表示二維數(shù)組中的每一個索引
//arr3[i]:表示二維數(shù)組中的每一個元素(一維數(shù)組)
for (int j = 0; j < arr3[i].length; j++) {
System.out.println(arr3[i][j]);
}
}
//每個一維數(shù)組單獨打印在一行
//外循環(huán):遍歷二維數(shù)組,得到里面的每一個一維數(shù)組
//內(nèi)循環(huán):遍歷一維數(shù)組,得到里面的每一個元素
for (int i = 0; i < arr3.length; i++) {
//i:表示二維數(shù)組中的每一個索引
//arr3[i]:表示二維數(shù)組中的每一個元素(一維數(shù)組)
for (int j = 0; j < arr3[i].length; j++) {
System.out.print(arr3[i][j]+" ");
}
System.out.println();
}
}
}

2.動態(tài)初始化

public class TwoDimensionDemo2 {
public static void main(String[] args) {
//1.利用動態(tài)初始化格式創(chuàng)建二維數(shù)組
int[][]arr1=new int[3][5];
//3:表示二維數(shù)組的長度為3,可以裝3個一維數(shù)組
//5:表示每一個一維數(shù)組的長度都是5,可以裝5個int類型的元素
//2.給二維數(shù)組賦值一個元素
arr1[0][0]=10;
//3.遍歷二維數(shù)組
//外循環(huán):遍歷二維數(shù)組獲取里面的每一個一維數(shù)組
//內(nèi)循環(huán):遍歷一維數(shù)組獲取里面的每一個元素
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的寫法:
(知道就好,不需要重點掌握)

(上圖中的代碼int[ ][ ] arr=new int[2][ ];2表示二維數(shù)組長度為2,表示在堆內(nèi)存中只創(chuàng)建了一個二維數(shù)組,沒有創(chuàng)建一維數(shù)組)
則需要手動創(chuàng)建一維數(shù)組:

再把一維數(shù)組的地址值添加給二維數(shù)組:
把a(bǔ)rr1賦值給arr的0索引
把a(bǔ)rr2賦值給arr的1索引

特殊情況1的寫法的好處:
自己創(chuàng)建一維數(shù)組,比較靈活,二維數(shù)組里面的每一個一維數(shù)組想創(chuàng)建多長就創(chuàng)建多長
如果是java創(chuàng)建一維數(shù)組,在初始化的時候創(chuàng)建的每一個一維數(shù)組的長度都是一樣的
2.特殊情況2的寫法
首先是按照標(biāo)準(zhǔn)的形式創(chuàng)建了一個二維數(shù)組
然后在下面又創(chuàng)建了兩個一維數(shù)組
并且進(jìn)行了添加



那么原來堆內(nèi)存中的右側(cè)的兩個數(shù)組的地址值被覆蓋了,它們沒人用了,從而變成垃圾,就會從堆內(nèi)存中消失

四、二維數(shù)組的練習(xí)題

public class TwoDimensionDemo3 {
public static void main(String[] args) {
//1.創(chuàng)建二維數(shù)組并存儲數(shù)據(jù)
//已經(jīng)知道數(shù)據(jù)用靜態(tài)初始化
int[][] yearArrArr={
{22,66,44},
{77,33,88},
{25,45,65},
{11,66,99}
};
//表示全年的營業(yè)額
int yearSum=0;
//2.遍歷二維數(shù)組得到每一個一維數(shù)組并求和
for (int i = 0; i < yearArrArr.length; i++) {
//i 二維數(shù)組中的每一個索引
//yearArrArr[i] 元素(一維數(shù)組)
int[] quarterArr=yearArrArr[i];
int sum=getSum(quarterArr);
System.out.println("第"+(i+1)+"個季度的總營業(yè)額為"+sum);
yearSum=yearSum+sum;
}
System.out.println("全年的營業(yè)額為:"+yearSum);
}
//定義一個方法,計算每一個季度的營業(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)容你是否有所收獲呢友友們??如果有寫的不對的地方,歡迎大家?guī)臀抑刚?最后,希望友友們點贊收藏一下
以上就是Java二維數(shù)組講解的詳細(xì)內(nèi)容,更多關(guān)于Java二維數(shù)組的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java數(shù)據(jù)結(jié)構(gòu)之java實現(xiàn)棧
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)棧,需要的朋友可以參考下2014-03-03
高并發(fā)下如何避免重復(fù)數(shù)據(jù)產(chǎn)生技巧
這篇文章主要為大家介紹了高并發(fā)下如何避免重復(fù)數(shù)據(jù)的產(chǎn)生技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
SpringBoot+vue+Axios實現(xiàn)Token令牌的詳細(xì)過程
Token是在服務(wù)端產(chǎn)生的,前端可以使用用戶名/密碼向服務(wù)端請求認(rèn)證(登錄),服務(wù)端認(rèn)證成功,服務(wù)端會返回?Token?給前端,Token可以使用自己的算法自定義,本文給大家介紹SpringBoot+vue+Axios實現(xiàn)Token令牌,感興趣的朋友一起看看吧2023-10-10
springboot實現(xiàn)執(zhí)行sql語句打印到控制臺
這篇文章主要介紹了springboot實現(xiàn)執(zhí)行sql語句打印到控制臺的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

