Java二维数组详解

简介: 1.二维数组2.二维数组的创建及初始化(1)静态初始化(2)动态初始化方法1方法23.二维数组在内存中的存储4.二维数组的使用(1)二维数组的遍历(2)传递参数给方法 (3)作为返回值

1.二维数组

二维数组的本质其实就是一维数组,只不过每个元素又是一个一维数组


2.二维数组的创建及初始化

二维数组的初始化主要分为静态初始化动态初始化


(1)静态初始化

在创建数组时不直接指定数据元素个数,而是直接将具体的数据内容进行指定

publicclassTest {
publicstaticvoidmain(String[] args) {
int[][] arr= {{1,2,3},{4,5,6}};
for (inti=0; i<2; i++) {
for (intj=0; j<3; j++) {
System.out.print(arr[i][j] +" ");
            }
System.out.println();
        }
    }
}


运行结果


1.png


静态初始化虽然未指定二维数组的行和列,但编译器会在编译时会根据{}中的元素个数来确定数组行与列的大小


在静态初始化时,{}中的数据类型必须与[]前的数据类型保持一致


(2)动态初始化

在创建数组时,直接指定数组中的元素的个数


方法1

先声明,再创建二维数组对象

publicclassTest {
publicstaticvoidmain(String[] args) {
intarr[][];//声明二维数组arr=newint[3][4];
for (inti=0; i<3; i++) {
for (intj=0; j<4; j++) {
System.out.print(arr[i][j] +" ");
            }
System.out.println();
        }
    }
}


运行结果


2.png


在使用二维数组时,若未对二维数组进行初始化,数组中的元素为默认值


若数组中的元素为基本数据类型,默认值为基本数据类型对应的默认值,

类型

默认值

byte 0
short

0

int

0

long

0

float

0.0f

double

0.0

char

/u0000

boolean false


若数组中的元素为引用类型,默认值为null

方法2

直接创建数组对象

publicclassTest {
publicstaticvoidmain(String[] args) {
int[][] arr=newint[3][4];
for (inti=0; i<3; i++) {
for (intj=0; j<4; j++) {
System.out.print(arr[i][j] +" ");
            }
System.out.println();
        }
    }
}


在Java中,创建二维数组时,行不能省略,列可以省略


publicclassTest {
publicstaticvoidmain(String[] args) {
int[][] arr=newint[2][];
arr[0] =newint[]{1,2,3};
arr[1] =newint[]{4,5};
    }
}


可以通过arr[i]对数组中的元素进行赋值


此时的二维数组为:


3.png


3.二维数组在内存中的存储

int[][] arr = {{1,2},{3,4}};


4.png

如图所示,对于一个二维数组来说,数组元素中存放的是一维数组的地址


4.二维数组的使用

(1)二维数组的遍历

如何遍历二维数组?我们可以先找到一维数组,再找到该一维数组中要输出的元素


可以使用arr.length求二维数组的行,arr[i].length求该行的元素个数,通过arr[i][j]来访问二维数组i行j列的元素

publicclassTest {
publicstaticvoidmain(String[] args) {
int[][] arr= {{1,2,3},{4,5,7,9}};
for (inti=0; i<arr.length; i++) {
for (intj=0; j<arr[i].length; j++) {
System.out.print(arr[i][j] +" ");
            }
System.out.println();
        }
    }
}


也可以使用Arrays.deepToString()方法,将二维数组转换为字符串


注:Arrays类位于java.util包中,所以要想使用Arrays类中的方法首先要进行导包

importjava.util.Arrays;
publicclassTest {
publicstaticvoidmain(String[] args) {
int[][] arr= {{1,2,3},{4,5,7,9}};
System.out.println(Arrays.deepToString(arr));
    }
}


运行结果

5.png


(2)传递参数给方法

publicclassTest {
publicstaticvoidprint(int[][] arr){
for (inti=0; i<arr.length; i++) {
for (intj=0; j<arr[i].length; j++) {
System.out.print(arr[i][j] +" ");
            }
System.out.println();
        }
    }
publicstaticvoidmain(String[] args) {
int[][] arr= {{1,2,3},{4,5,6}};
print(arr);
    }
}


(3)作为返回值

importjava.util.Arrays;
publicclassTest {
publicstaticint[][] Initalize(int[][] arr){
for (inti=0; i<arr.length; i++) {
for (intj=0; j<arr[i].length; j++) {
arr[i][j] =i+j;
            }
        }
returnarr;
    }
publicstaticvoidmain(String[] args) {
int[][] arr=newint[3][4];
Initalize(arr);
System.out.println(Arrays.deepToString(arr));
    }
}


运行结果


6.png

目录
相关文章
|
2月前
|
人工智能 Java
Java练习题-输出二维数组对角线元素和
Java练习题-输出二维数组对角线元素和
37 1
|
7月前
|
Java 索引
12.Java二维数组讲解
12.Java二维数组讲解
58 1
|
2月前
|
存储 Java
Java二维数组的声明与操作技术详解
Java二维数组的声明与操作技术详解
49 10
|
5天前
|
Java
二维数组与稀疏数组转换(java)
二维数组与稀疏数组转换(java)
6 0
|
2月前
|
Java 容器
Java集合类ArrayList应用 | 二维数组的集合类表示与杨辉三角实现
这是一个关于LeetCode第118题“杨辉三角”的问题解答摘要。题目要求生成一个杨辉三角的前n行,其中每一行都是由前一行的元素按规则生成的。杨辉三角的规律是:每一行的第一个和最后一个数是1,其他数是其上方两数之和。
30 4
|
2月前
|
存储 Java
Java二维数组的初始化技术详解
Java二维数组的初始化技术详解
30 0
|
2月前
|
存储 Java 索引
Java二维数组的引用与操作技术详解
Java二维数组的引用与操作技术详解
20 0
|
2月前
|
Java
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历...
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历
22 0
|
2月前
|
存储 Java C语言
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
19 0
|
2月前
|
Java 索引
Java SE ____二维数组
Java SE ____二维数组