自学内容网 自学内容网

《从C/C++到Java入门指南》- 16.多维数组

多维数组

二维数组

打印一下 Java 中的二维数组会发现,打印的是 JVM 中的地址:

import java.util.*;
public class Main {
    public static void main(String[] args) {
    int arr[][] = {
    {1, 2, 3},
    {4, 5, 6}
    };
    int ns[] = {3, 4, 1, 3};
    
    System.out.println(Arrays.toString(arr));
    System.out.println(Arrays.toString(ns));    
    }
}

输出结果:

[[I@5ccd43c2, [I@4aa8f0b4]
[3, 4, 1, 3]

打印一下二维数组的长度:

import java.util.*;
public class Main {
    public static void main(String[] args) {
    int arr[][] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
    };
    System.out.println(arr.length);
    }
}

其在内容中的结构如下:

image-20240719104535222

打印出数组的每一行:

import java.util.*;
public class Main {
    public static void main(String[] args) {
    int arr[][] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
    };
    int arr_0[] = arr[0];
    int arr_1[] = arr[1];
    int arr_2[] = arr[2];
    System.out.println(Arrays.toString(arr_0));
    System.out.println(Arrays.toString(arr_1));
    System.out.println(Arrays.toString(arr_2));
    }
}

Java 中二维数组中的每一个子数组长度不要求相同

import java.util.*;
public class Main {
    public static void main(String[] args) {
    int arr[][] = {
    {1, 2, 3},
    {4, 5, 6, 8, 9},
    {7, 8, 9, 7}
    };
    int arr_0[] = arr[0];
    int arr_1[] = arr[1];
    int arr_2[] = arr[2];
    System.out.println(Arrays.toString(arr_0));
    System.out.println(Arrays.toString(arr_1));
    System.out.println(Arrays.toString(arr_2));
    }
}

打印二维数组

最麻烦的方法当然是用循环打印二维数组了,但是还有一种更加简单的方法(调用 JDK函数接口):

使用Arrays.deepToString()方法

import java.util.*;
public class Main {
    public static void main(String[] args) {
    int arr[][] = {
    {1, 2, 3},
    {4, 5, 6, 8, 9},
    {7, 8, 9, 7}
    };
    System.out.println(Arrays.deepToString(arr));
    }
}

三维数组

一种很形象的描述是:“三维数组就是二维数组的数组”。

import java.util.*;
public class Main {
    public static void main(String[] args) {
    int[][][] ns = {
        {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        },
        {
            {10, 11},
            {12, 13}
        },
        {
            {14, 15, 16},
            {17, 18}
        }
    };
    System.out.println(Arrays.deepToString(ns));
    }
}

可以看到,deepToString()就是一种深度搜索的打印多维数组的方法,在三位数组的情况下也同样适用,并且它在内存中的结构如下图所示:

image-20240719105357795

练习

使用二维数组可以表示一组学生的各科成绩,请计算所有学生的平均分:

int[][] scores = {
                { 82, 90, 91 },
                { 68, 72, 64 },
                { 95, 91, 89 },
                { 67, 52, 60 },
                { 79, 81, 85 },
        };
import java.util.*;
public class Main {
    public static void main(String[] args) {
    int[][] scores = {
                { 82, 90, 91 },
                { 68, 72, 64 },
                { 95, 91, 89 },
                { 67, 52, 60 },
                { 79, 81, 85 },
        };
    for (int[] stu : scores) {
    int stu_ave = 0;
    for (int score : stu) {
    stu_ave += score;
    }// 对每个学生求出成绩的总分
    stu_ave /= scores[0].length;// 除以长度得到其平均分
    System.out.println(stu_ave);
    }
    }
}


原文地址:https://blog.csdn.net/2301_79640368/article/details/140579844

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!