Java中二维数组是什么?如何使用?概念!语法!案例!三方面讲解。
Posted 孟挽周
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中二维数组是什么?如何使用?概念!语法!案例!三方面讲解。相关的知识,希望对你有一定的参考价值。
说明
二维数组本质上是以数组作为数组元素的数组,即
数组的数组
。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。
如何去理解数组中的数组呢?
- 二维数组的0下标,中存放了一个数组,1,2,下标亦是如此,这整个大的数组就是一个二维数组。这时小伙伴们应该会有疑问,既然数组中可以存放数组,那可不可以有三维数组?答案是 有的!,不过通常来讲二维数组已经足够满足我们开发需求了。
不会java8的可以先看我之前写过的一篇文章:JDK都出到16了,8还没有掌握吗?一篇文章打包带走Java8新特性
语法
- 语法与初始化方法基本与普通数组一样。
- 定义一个二维数组:类型 数组名[常量表达式][常量表达式]
int arr [][]
- 静态初始化:类型 数组名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}…};
int arr[][]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};
- 动态初始化:类型 数组名 = new 类型 [行][列]
int arr [][] = new int [11][11];
了解完语法之后我们在回到上面那张图,清楚的可以看出这是一个三行五列的二维数组。那么问题又来了,这样结构的数组我要怎么给它里面放值呢?
- 想要往里面放值我们首先结合上方语法定义第一个三行五列的二维数组并输出到控制台。
public static void main(String[] args) {
int arr [][] = new int[3][5];
Arrays.stream(arr).forEach(arrs-> {
Arrays.stream(arrs).forEach(a-> System.out.printf("%d\\t",a));
System.out.println();
});
}
- 输出后我们可以清晰的看出来,它的行和列对应的值,既然定义如此赋值也当如此,下面我们给第三行第二列赋值为5。
int arr [][] = new int[3][5];
arr[2][1]=5;
Arrays.stream(arr).forEach(arrs-> {
Arrays.stream(arrs).forEach(a-> System.out.printf("%d\\t",a));
System.out.println();
});
注意:别忘了数组的下标从0开始!
案例
- 二维数组求和
public static void main(String[] args) {
int [][] arr ={{1,2},{1,2,3},{1,2,3,4}};
//求和
int sum=0;
for (int i=0;i<arr.length;i++){
for (int j=0;j<arr[i].length;j++){
sum+=arr[i][j];
}
}
System.out.println(sum);
}
这样看起来很不直观,没有关系,我们来分析一下循环体,第一次进入循环
i
为0
,j
也为0
我们可以通过arr[i][j]
拿到第0
行第0
列的值,为1
,第二次循环我们i
依旧为0
但是我们的j
为1
,我们再次通过arr[i][j]
可以拿到第0
行第1
列的值为2
,因为我们二维数组的第0
行的数组就两个值,接下来我们要遍历第1
行数据了,此时我们的i
为1
因为重新进入循环体了j
也会从0
开始j
既然等于0
我们会得到第1
行第0
列的值,为1
以此类推并相加,我们就拿到最终的结果了。
- 能够使用二维数组存储班上三个学生两门功课的考试成绩并求出每个学生总分,平均分,最高分,最低分。
初始化一个三行两列的二维数组。
public static void main(String[] args) {
//初始化一个二维数组
int student[][] =new int[3][2];
student[0][0]=60;
student[0][1]=80;
student[1][0]=90;
student[1][1]=79;
student[2][0]=80;
student[2][1]=50;
//每个学生总分
getSum(student);
//每个学生平均分
getAvg(student);
//每个学生的最高分
getMax(student);
//每个学生的最低分
getMin(student);
}
每个学生的课程总分
public static int [] getSum(int[][] student){
int[] studentSum=new int[student.length];
for (int i=0;i<student.length;i++){
int sum=0;
for (int j=0;j<student[i].length;j++){
sum+=student[i][j];
}
studentSum[i]=sum;
}
return studentSum;
}
每个学生的课程平均分
public static int [] getAvg(int[][] student){
int[] studentAvg=new int[student.length];
for (int i=0;i<student.length;i++){
int age=0;
for (int j=0;j<student[i].length;j++){
age+=student[i][j];
}
studentAvg[i]=age/student[i].length;
}
return studentAvg;
}
每个学生的课程最高分
public static int [] getMax(int[][] student){
int[] studentMax=new int[student.length];
for (int i=0;i<student.length;i++){
int max = student[i][0];
for (int j=0;j<student[i].length;j++){
if (max<student[i][j]){
max=student[i][j];
}
}
studentMax[i]=max;
}
return studentMax;
}
每个学生的课程最低分
public static int [] getMin(int[][] student){
int[] studentMin=new int[student.length];
for (int i=0;i<student.length;i++){
int min = student[i][0];
for (int j=0;j<student[i].length;j++){
if (min>student[i][j]){
min=student[i][j];
}
}
studentMin[i]=min;
}
return studentMin;
}
一键三连加关注,就是对作者最大的支持 !
以上是关于Java中二维数组是什么?如何使用?概念!语法!案例!三方面讲解。的主要内容,如果未能解决你的问题,请参考以下文章