Java?二維數(shù)組創(chuàng)建及使用方式
二維數(shù)組的創(chuàng)建
二維數(shù)組好比一個表格,第一個下標表示行,第二個下標表示列,數(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ù)組要通過兩個下標來獲取,例如: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]) { ?//當每一行輸出三列后換行
??? ??? ??? ??? ? ?
??? ??? ??? ??? ? ?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ù)組的應用場景
- 比如我們開發(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 得到 對應的 每個一維數(shù)組的長度
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " "); //輸出了一維數(shù)組
}
System.out.println();//換行
}
- 舉例:訪問二位數(shù)組中值為 3 的數(shù)組坐標
//關于二維數(shù)組的關鍵概念
//(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ù)組里對應的第3行第4列的值,3對應的坐標本來是 arr[3][4],但數(shù)組是從0開始的,所以減1,就是arr[2][3],所以 3 對應的實際坐標就是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ù)組的應用案例
使用二維數(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ù)組課堂練習

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
spring boot項目生成docker鏡像并完成容器部署的方法步驟
這篇文章主要介紹了spring boot項目生成docker鏡像并完成容器部署的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10
Java基礎MAC系統(tǒng)下IDEA連接MYSQL數(shù)據(jù)庫JDBC過程
最近一直在學習web項目,當然也會涉及與數(shù)據(jù)庫的連接這塊,這里就總結(jié)一下在IDEA中如何進行MySQL數(shù)據(jù)庫的連接,這里提一下我的電腦是MAC系統(tǒng),使用的編碼軟件是IDEA,數(shù)據(jù)庫是MySQL2021-09-09
Spring Boot 項目發(fā)布到 Tomcat 服務器的操作步驟
這篇文章主要介紹了Spring Boot 項目發(fā)布到 Tomcat 服務器的操作步驟,需要的朋友可以參考下2017-04-04
Mybatis-plus 批量插入太慢的問題解決(提升插入性能)
公司使用的Mybatis-Plus操作SQL,用過Mybatis-Plus的小伙伴一定知道他有很多API提供給我們使用,但是批量插入大數(shù)據(jù)太慢應該怎么解決,本文就詳細的介紹一下,感興趣的可以了解一下2021-11-11
Spring連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟
本文主要介紹了Spring連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

