0
点赞
收藏
分享

微信扫一扫

11_Java筑基之二维数组


11_Java筑基之二维数组

1. 二维数组的概念

本质上还是一个一维数组,只是其数组元素又是一个一维数组.

举例说明:
变量,一维数组,二维数组之间的关系.

买烟的例子:
没钱: 一根烟 一个变量
稍微有钱 一包烟 一维数组
有钱 一条烟 【20根】

2. 二维数组的定义

方式一: 元素类型[][] 数组名称; 
方式二: 元素类型 数组名称[][];

推荐使用方式一.

3. 数组的初始化

3.1 静态初始化

语法: 元素类型[][] 数组名称 = new 元素类型[][]{{一维数组1,一维数组2,一维数组3....}; 

简化: 元素类型[][] 数组名称 =m{{一维数组1,一维数组2,一维数组3....};

举例:
int[][] arr = new int[][]{{2,3},{5,2,1},{10,45,22,54}};

int[][] arr = {{2,3},{5,2,1},{10,45,22,54}};

3.2 动态初始化

语法: 元素类型[][] 数组名称 = new 元素类型[二维数组的长度][一维数组的长度];

举例:
int[][] arr = new int[3][4];

说明:
定义一个数组arr,二维数组中一维数组的个数为3个,每个一维数组中元素的个数为4个.

4. 二维数组的访问

4.1 通过下标访问二维的指定元素

class TwiceArrayDemo01{
public static void main(String[] args){
int[][] arr = new int[3][4];
System.out.println(arr);
System.out.println(arr.length);//3
System.out.println(arr[0]);
System.out.println(arr[0].length);//4
System.out.println(Arrays.toString(arr));

//[0, 0, 0, 0]
System.out.println(Arrays.toString(arr[0]));
}
}

4.2 遍历二维数组

//常见的操作:遍历二维数组 
class TwiceArrayDemo02 {
public static void main(String[] args){
//如果二维数组中一维数组的元素个数不确定
//int[][] arr = new int[3][];

int[][] arr = new int[][]{{2,3},{5,2,1},{10,45,22,54}};

//遍历arr
for(int i = 0;i < arr.length;i++) {
System.out.println(arr[i]);
}

//赋值:给arr中的第1个元素修改值
arr[1] = new int[2];

//给arr[0]中的第0个元素修改值
arr[0][0] = 10;

//遍历arr[0]
for(int i = 0;i < arr[0].length;i++){
System.out.println(arr[0][i]);
}

//二维数组的遍历:嵌套for循环
//简单for循环
for(int i = 0;i < arr.length;i++) {
int[] subArr = arr[i];
for(int j=0;j<subArr.length;j++){
System.out.println(subArr[j]);
}
}

//增强for循环
for(int[] subArr1:arr) {
for(int n:subArr1) {
System.out.println(n);
}
}
}
}

上机练习:

一个班级有两门课程,5个学生,使用二维数组保存每门课的成绩,并计算每门课的总分与平均分.

public static void main(String[] args) {
double[][] scores=new double[2][5];
Scanner input=new Scanner(System.in);

for(int i=0;i<scores.length;i++){
for(int j=0;j<scores[i].length;j++){
System.out.println("请输入第"+(i+1)+"门课,第"+(j+1)+"个学生的成绩");
scores[i][j]=input.nextDouble();
}
}

System.out.println("------------------");

for(int i=0;i<scores.length;i++) {
double sum=0;
for(int j=0;j<scores[i].length;j++){
sum+=scores[i][j];
}

System.out.println("第"+(i+1)+"门课的总分是:"+sum);
System.out.println("第"+(i+1)+"门课的平均分是:"+(sum/5));
}
}

5. 二维数组内存分析

public static void main(String[] args) {
int[][] nums={{10,20,30},{40,50,60}};
int[][] nums2={{1,2},{3,4},{5,6}};
int[][] nums3=new int[3][2];
int[][] nums4=new int[2][];
}

5.1 画图分析

11_Java筑基之二维数组_System


 

举报

相关推荐

0 条评论