Java?二維數(shù)組創(chuàng)建及使用方式
二維數(shù)組的創(chuàng)建
二維數(shù)組好比一個表格,第一個下標(biāo)表示行,第二個下標(biāo)表示列,數(shù)組的創(chuàng)建和初始化與一位數(shù)組一模一樣,及二維數(shù)組就是一個把多個一維數(shù)組包起來的數(shù)組。
數(shù)組的創(chuàng)建:
type[][] arrayName;或者 type arrayName[][];
數(shù)組的初始化:
給數(shù)組分配空間大小,不能被修改,在賦值。
type[][] arrayName=new type[length1][length2]
通過new給數(shù)組賦值,不給空間大小。
type[][] arrayName=new type[][]{{值1,值2,值3},{值1,值2,值3}};
直接給數(shù)組賦值,空間大小不分配。
type[][] arrayName={{值1,值2,值3},{值1,值2,值3}};
數(shù)組的二維長度為空。
type[][] arrayName=new type[length1][];
數(shù)組元素的獲?。?/strong>
二維數(shù)組要通過兩個下標(biāo)來獲取,例如:arrayName[0][0] 獲取最前面的元素值,arrayName[arrayName.length-1][arrayName[arrayName.length-1].length-1] 取出數(shù)組的最后一個元素。
例1:給定一個3行3列的二維數(shù)組,并初始化賦值,每行輸出三個就換行。
public class dome2{ ??? ?public static void main(String[] args) { ??? ? ?int[][] a= {{1,6,5},{7,3,0},{1,5,7}}; ??? ? ? ??? ? ?for(int i=0;i<a.length;i++) { ?//二維數(shù)組的行循環(huán) ??? ??? ? ? ??? ??? ? ?for(int j=0;j<a[i].length;j++) { ?//二維數(shù)組的列循環(huán) ??? ??? ??? ? ? ??? ??? ??? ? System.out.print(a[i][j]+" "); ?//輸出每個元素 ??? ??? ??? ?? ??? ??? ??? ? ?if(a[i][2]==a[i][j]) { ?//當(dāng)每一行輸出三列后換行 ??? ??? ??? ??? ? ? ??? ??? ??? ??? ? ?System.out.println(); ??? ??? ??? ??? ? ? ??? ??? ??? ? ?} ??? ??? ? ?} ??? ? ?} ?? ?} }
結(jié)果
1 6 5
7 3 0
1 5 7
例2: 循環(huán)輸入3行3列的二維數(shù)組,并將它順時針旋轉(zhuǎn)90°輸出三行三列。
import java.util.Scanner; public class dome2{ ??? ?public static void main(String[] args) { ??? ? ?int[][] a=new int[3][3]; ??? ? ?Scanner sc=new Scanner(System.in); ??? ? ?//循環(huán)輸入 ??? ? ?for(int i=0;i<a.length;i++) { ??? ??? ? ?for(int j=0;j<a[i].length;j++) { ??? ??? ??? ? ?a[i][j]=sc.nextInt(); ??? ??? ? ?} ??? ? ?} ??? ? ?//每行3個換行 ??? ? for(int i=0;i<a.length;i++) { ?? ??? ? ?for(int j=0;j<a[i].length;j++) { ?? ??? ??? ? ?System.out.print(a[i][j]+" "); ?? ??? ??? ? ?if(a[i][2]==a[i][j]) { ?? ??? ??? ??? ? ?System.out.println(); ?? ??? ??? ? ?} ?? ??? ? ?} ?? ? ?} ??? ? //創(chuàng)建新的數(shù)組并且旋轉(zhuǎn)賦值 ??? ? int[][] b=new int[3][3]; ??? ? for(int i=0;i<3;i++) { ?? ??? ? ?for(int j=0;j<3;j++) { ?? ??? ??? ? ?b[j][2-i]=a[i][j]; ?? ??? ? ?} ?? ? ?} ??? ? //循環(huán)輸出 ??? ?for(int i=0;i<b.length;i++) { ?? ??? ? ?for(int j=0;j<b[i].length;j++) { ?? ??? ??? ? ?System.out.print(b[i][j]+" "); ?? ??? ??? ? ?if(b[i][2]==b[i][j]) { ?? ??? ??? ??? ? ?System.out.println(); ?? ??? ??? ? ?} ?? ??? ? ?} ?? ? ?} ?? ?} }
結(jié)果
1 2 3 4 5 6 7 8 9
1 2 3
4 5 6
7 8 9
旋轉(zhuǎn)后的結(jié)果
7 4 1
8 5 2
9 6 3
二維數(shù)組基本使用
- 二維數(shù)組的應(yīng)用場景
- 比如我們開發(fā)一個五子棋游戲,棋盤就是需要二維數(shù)組來表示。如圖:
1. 二維數(shù)組的使用
- 快速入門案例:TwoDimensionalArray01.java
- 請用二維數(shù)組輸出如下圖形
0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 3 0 0 0 0 0 0 0 0
//什么是二維數(shù)組: //1. 從定義形式上看 int[][] //2. 可以這樣理解,原來的一維數(shù)組的每個元素是一維數(shù)組, 就構(gòu)成二維數(shù)組 int[][] arr = { {0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0,2, 0, 3, 0, 0}, {0, 0, 0, 0, 0, 0} }; //輸出二維圖形 for(int i = 0; i < arr.length; i++) {//遍歷二維數(shù)組的每個元素 //遍歷二維數(shù)組的每個元素(數(shù)組) //解讀 //1. arr[i] 表示 二維數(shù)組的第i+1個元素 比如arr[0]:二維數(shù)組的第一個元素 //2. arr[i].length 得到 對應(yīng)的 每個一維數(shù)組的長度 for(int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + " "); //輸出了一維數(shù)組 } System.out.println();//換行 }
- 舉例:訪問二位數(shù)組中值為 3 的數(shù)組坐標(biāo)
//關(guān)于二維數(shù)組的關(guān)鍵概念 //(1) System.out.println("二維數(shù)組的元素個數(shù)=" + arr.length); //(2) 二維數(shù)組的每個元素是一維數(shù)組, 所以如果需要得到每個一維數(shù)組的值 // 還需要再次遍歷 //(3) 如果我們要訪問第 (i+1)個一維數(shù)組的第j+1個值 arr[i][j]; // 舉例 訪問 3, =》 它是第3個一維數(shù)組的第4個值 arr[3-1][4-1] = arr[2][3] System.out.println("第3個一維數(shù)組的第4個值=" + arr[2][3]); //3
- 3的值在二維數(shù)組里對應(yīng)的第3行第4列的值,3對應(yīng)的坐標(biāo)本來是 arr[3][4],但數(shù)組是從0開始的,所以減1,就是arr[2][3],所以 3 對應(yīng)的實際坐標(biāo)就是arr[2][3]
2. 使用方式 1: 動態(tài)初始化
TwoDimensionalArray02.java
1.語法: 類型[][] 數(shù)組名=new 類型[大小][大小]
2.比如: int a[][]=new int[2][3],表示這個二位數(shù)組里面有兩個一維數(shù)組,而每個一維數(shù)組里有三個元素
3.使用演示
- 沒有賦值,默認值為 0
int arr[][] = new int[2][3]; //遍歷arr數(shù)組 for(int i = 0; i < arr.length; i++) { for(int j = 0; j < arr[i].length; j++) {//對每個一維數(shù)組遍歷 System.out.print(arr[i][j] +" "); } System.out.println();//換行 }
- 把上面的數(shù)組進行初始化賦值,arr[1][1] = 8 表示 在第二個一維數(shù)組的第二個元素的值為 8
int arr[][] = new int[2][3]; arr[1][1] = 8; //遍歷arr數(shù)組 for(int i = 0; i < arr.length; i++) { for(int j = 0; j < arr[i].length; j++) {//對每個一維數(shù)組遍歷 System.out.print(arr[i][j] +" "); } System.out.println();//換行 }
二維數(shù)組在內(nèi)存的存在形式
3. 使用方式 2: 動態(tài)初始化
TwoDimensionalArray02.java
- 先聲明:類型 數(shù)組名[][];
- 再定義(開辟空間) 數(shù)組名 = new 類型[大小][大小];
- 賦值(有默認值,比如 int 類型的就是 0)
- 使用演示
int arr[][]; //聲明二維數(shù)組 arr = new int[2][3]; //再開空間
4. 使用方式 3: 動態(tài)初始化-列數(shù)不確
TwoDimensionalArray03
代碼實現(xiàn):
/* 看一個需求:動態(tài)創(chuàng)建下面二維數(shù)組,并輸出 i = 0: 1 i = 1: 2 2 i = 2: 3 3 3 一個有三個一維數(shù)組, 每個一維數(shù)組的元素是不一樣的 */ //創(chuàng)建 二維數(shù)組,一個有3個一維數(shù)組,但是每個一維數(shù)組還沒有開數(shù)據(jù)空間 int[][] arr = new int[3][]; for(int i = 0; i < arr.length; i++) {//遍歷arr每個一維數(shù)組 //給每個一維數(shù)組開空間 new //如果沒有給一維數(shù)組 new ,那么 arr[i]就是null arr[i] = new int[i + 1]; //遍歷一維數(shù)組,并給一維數(shù)組的每個元素賦值 for(int j = 0; j < arr[i].length; j++) { arr[i][j] = i + 1;//賦值 } } System.out.println("=====arr元素====="); //遍歷arr輸出 for(int i = 0; i < arr.length; i++) { //輸出arr的每個一維數(shù)組 for(int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + " "); } System.out.println();//換行 }
5. 使用方式 4: 靜態(tài)初始化
TwoDimensionalArray04.java
- 定義 類型 數(shù)組名[][] = {{值 1,值 2..},{值 1,值 2..},{值 1,值 2..}}
- 使用即可 [ 固定方式訪問 ]
- 比如:
int[][] arr = {{1,1,1}, {8,8,9}, {100}};
- 解讀
1.定義了一個二維數(shù)組 arr
2.arr 有三個元素(每個元素都是一維數(shù)組)
3.第一個一維數(shù)組有 3 個元素 , 第二個一維數(shù)組有 3 個元素, 第三個一維數(shù)組有 1 個元素
- 案例:
TwoDimensionalArray05.java
int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍歷該二維數(shù)組,并得到和
/* 思路 1. 遍歷二維數(shù)組,并將各個值累計到 int sum */ int arr[][]= {{4,6},{1,4,5,7},{-2}}; int sum = 0; for(int i = 0; i < arr.length; i++) { //遍歷每個一維數(shù)組 for(int j = 0; j < arr[i].length; j++) { sum += arr[i][j]; } } System.out.println("sum=" + sum);
6. 二維數(shù)組的應(yīng)用案例
使用二維數(shù)組打印一個 10 行楊輝三角 YangHui.java
int[][] yangHui = new int[12][]; for(int i = 0; i < yangHui.length; i++) {//遍歷yangHui的每個元素 //給每個一維數(shù)組(行) 開空間 yangHui[i] = new int[i+1]; //給每個一維數(shù)組(行) 賦值 for(int j = 0; j < yangHui[i].length; j++){ //每一行的第一個元素和最后一個元素都是1 if(j == 0 || j == yangHui[i].length - 1) { yangHui[i][j] = 1; } else {//中間的元素 yangHui[i][j] = yangHui[i-1][j] + yangHui[i-1][j-1]; } } } //輸出楊輝三角 for(int i = 0; i < yangHui.length; i++) { for(int j = 0; j < yangHui[i].length; j++) {//遍歷輸出該行 System.out.print(yangHui[i][j] + "\t"); } System.out.println();//換行. }
7. 二維數(shù)組使用細節(jié)和注意事項
一維數(shù)組的聲明方式有:
int[] x 或者 int x[]
二維數(shù)組的聲明方式有:
int[][] y 或者 int[] y[] 或者 int y[][]
二維數(shù)組實際上是由多個一維數(shù)組組成的,它的各個一維數(shù)組的長度可以相同,也可以不相同。比如: map[][] 是一個二維數(shù)組
int map [][] = {{1,2},{3,4,5}}
由 map[0] 是一個含有兩個元素的一維數(shù)組 ,map[1] 是一個含有三個元素的一維數(shù)組構(gòu)成,我們也稱為列數(shù)不等的二維數(shù)組
8. 二維數(shù)組課堂練習(xí)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring boot項目生成docker鏡像并完成容器部署的方法步驟
這篇文章主要介紹了spring boot項目生成docker鏡像并完成容器部署的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Java基礎(chǔ)MAC系統(tǒng)下IDEA連接MYSQL數(shù)據(jù)庫JDBC過程
最近一直在學(xué)習(xí)web項目,當(dāng)然也會涉及與數(shù)據(jù)庫的連接這塊,這里就總結(jié)一下在IDEA中如何進行MySQL數(shù)據(jù)庫的連接,這里提一下我的電腦是MAC系統(tǒng),使用的編碼軟件是IDEA,數(shù)據(jù)庫是MySQL2021-09-09Spring Boot 項目發(fā)布到 Tomcat 服務(wù)器的操作步驟
這篇文章主要介紹了Spring Boot 項目發(fā)布到 Tomcat 服務(wù)器的操作步驟,需要的朋友可以參考下2017-04-04Mybatis-plus 批量插入太慢的問題解決(提升插入性能)
公司使用的Mybatis-Plus操作SQL,用過Mybatis-Plus的小伙伴一定知道他有很多API提供給我們使用,但是批量插入大數(shù)據(jù)太慢應(yīng)該怎么解決,本文就詳細的介紹一下,感興趣的可以了解一下2021-11-11Spring連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟
本文主要介紹了Spring連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03