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 画图分析


 

发布了234 篇原创文章 · 获赞 74 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/syc000666/article/details/102747513