前面二白讲了关于一维数组的相关知识和操作,Java中的二维数组本质上是每个一维数组都包含一个或多个元素,其中每个元素都代表二维数组中的一个元素。二维数组一般应用在矩阵的一些运算、二维数据的处理、图表的绘制、数据库的存储等方面。特别是在处理数据和表示矩阵等情况下非常有用,可以方便的存储和操作数据。这次咱们说一下二维数组的简单知识和常用的基础操作。
一、二维数组的创建
1.第一种
1)声明二维数组
数据类型[][] 数组名; 数据类型 数组名[][];
2)分配空间
数组名 = new 数据类型[数组长度][数组长度];
注意:第一个数组长度说明的是当前这个二维数组中有几个元素(有几个一维数组),第二个数组长度说明的是这个二维数组里面的每一个元素(又是一个一维数组)的长度; 第二个数组长度可以省略不写
3)赋值:数组名[下标][下标] = 数据;
遍历二维数组
int[][] nums;
nums = new int[3][2];
nums[0][0] = 10;
nums[0][1] = 20;
nums[1][0] = 30;
nums[1][1] = 40;
nums[2][0] = 50;
nums[2][1] = 60;
System.out.println(nums[0][0]);
nums[0][0] = 100;
System.out.println(nums[0][0]);
System.out.println("----------------------------");
for(int i =0;i< nums.length;i++){
// System.out.println(nums[i]);//这里输出的是二维数组中的每一个元素,这个元素又是一个一维数组,所以输出的是一维数组在内存中的地址值,没有意义,继续遍历这个元素(一维数组)
for(int j=0;j<nums[i].length;j++){
System.out.print(nums[i][j]+" ");
}
//输出二位数组的一个元素(一维数组)值之后,换行
System.out.println();
}
2.第二种
1)声明二维数组、分配空间
数据类型[][] 数组名 = new 数据类型[数组长度][数组长度];
数据类型 数组名[][] = new 数据类型[数组长度][数组长度];
注意:第一个数组长度说明的是当前这个二维数组中有几个元素(有几个一维数组),第二个数组长度说明的是这个二维数组里面的每一个元素(又是一个一维数组)的长度;
2)赋值
3)遍历输出所有元素
package com.kgc.se;
/**
* @JdkVersion: 17
* @Author: 二白程序员
* @Date 2024/4/9 13:38
* QQ:1512015112
* VX:18056394367
*/
public class TwoDemo02 {
public static void main(String[] args) {
//1、声明二维数组、分配空间
String[][] strs = new String[2][3];
//2、赋值
strs[0][0] = "qwe";
strs[0][1] = "asd";
strs[1][0] = "aaaa";
strs[1][1] = "bbbbb";
strs[1][2] = "cccc";
//3、遍历输出所有元素
for(int i =0;i<strs.length;i++){
for(int j =0;j<strs[i].length;j++){
System.out.print(strs[i][j]+" ");
}
System.out.println();
}
}
}
3.第三种
1、声明数组、分配空间、赋值合并写
数据类型[][] 数组名 = new 数据类型[][] 或 数据类型 数组名[][] = new 数据类型[][]
{{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};
注意:new之后[][]中不要数组长度,因为数组长度由元素个数决定
上面 三步合并写法可以简写
数据类型[][] 数组名 = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};
数据类型 数组名[][] = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};
2、遍历输出所有元素值
for(int i =0;i< chars.length;i++){
for(int j =0;j<chars[i].length;j++){
System.out.print(chars[i][j]+" ");
}
System.out.println();
}
上面写法可以简写
数据类型[][] 数组名 = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};
数据类型 数组名[][] = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};
package com.kgc.se;
/**
* @JdkVersion: 17
* @Author: 二白程序员
* @Date 2024/4/9 13:38
* QQ:1512015112
* VX:18056394367
*/
public class TwoDemo03 {
public static void main(String[] args) {
//1、声明数组、分配空间、赋值合并写
char[][] chars = new char[][]{{'a','b'},{'c','d','e','f'}};
//2、遍历输出所有元素值
for(int i =0;i< chars.length;i++){
for(int j =0;j<chars[i].length;j++){
System.out.print(chars[i][j]+" ");
}
System.out.println();
}
//上面写法可以简写
boolean bools[][] = {{true,false},{false,false,false},{true,false,false,true}};
//遍历数组
for(int i =0;i< bools.length;i++){
for(int j =0;j<bools[i].length;j++){
System.out.print(bools[i][j]+" ");
}
System.out.println();
}
}
}
二、简单小练习
需求:已知有3个班级各5名学员,请使用二维数组计算各个班级的总成绩
package com.kgc.se;
import java.util.Scanner;
/**
* @JdkVersion: 17
* @Author: 二白程序员
* @Date 2024/4/9 13:38
* QQ:1512015112
* VX:18056394367
*/
public class TwoDemo04 {
public static void main(String[] args) {
//需求:已知有3个班级各5名学员,请使用二维数组计算各个班级的总成绩
//创建一个Scanner对象用来获取学生成绩
Scanner scanner = new Scanner(System.in);
//准备一个长度为3的double类型的二维数组,这个二维数组里面的每个元素都是长度为5的double类型的一维数组
double[][] scores = new double[3][5];
//通过循环的方式将每个学生的成绩存储到这个二维数组中
for(int i =0;i<scores.length;i++){
System.out.println("------------------第"+(i+1)+"个班------------------");
//输入每个班的学生成绩,用循环实现
for(int j=0;j<scores[i].length;j++){
System.out.println("请输入第"+(j+1)+"个学生的成绩:");
scores[i][j]=scanner.nextDouble();
}
}
//输出各个班级的总成绩
System.out.println("------------------成绩统计------------------");
for(int i =0;i< scores.length;i++){
//在外层循环内声明一个double类型的变量,用来累加每个班级的学生总成绩
double sum = 0;
for(int j =0;j<scores[i].length;j++){
sum+=scores[i][j];
}
System.out.println("第"+(i+1)+"个班级的总成绩:"+sum);
}
}
}