Java数组篇[4]:多维数组

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

在Java中,数组不仅限于一维结构,还可以创建多维数组,如二维数组(矩阵)、三维数组等。多维数组在处理复杂的数据集合时非常有用,例如在图形表示、科学计算或游戏开发中。

摘要

本文将介绍多维数组的概念、声明、初始化以及访问和遍历方法。通过示例代码,展示多维数组在Java中的使用。

概述

多维数组可以看作是数组的数组。例如,二维数组可以看作是行和列的集合,每个元素本身又是一个数组。

声明多维数组

声明多维数组时,需要指定每个维度的大小。

// 声明一个二维数组
int[][] twoDimArray;

// 声明一个三维数组
int[][][] threeDimArray;

初始化多维数组

初始化多维数组意味着为每个维度分配内存空间。

// 初始化一个二维数组
twoDimArray = new int[3][4]; // 3行4列的二维数组

// 初始化一个三维数组
threeDimArray = new int[2][3][2]; // 2个三行三列的二维数组

访问多维数组元素

访问多维数组的元素需要使用多个索引。

// 访问二维数组的元素
int element = twoDimArray[0][1]; // 访问第一行第二列的元素

// 访问三维数组的元素
int element3D = threeDimArray[1][2][0]; // 访问第二组的第三行第二列的元素

遍历多维数组

遍历多维数组通常使用嵌套循环。

遍历二维数组

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

遍历三维数组

for (int k = 0; k < threeDimArray.length; k++) {
    for (int i = 0; i < threeDimArray[k].length; i++) {
        for (int j = 0; j < threeDimArray[k][i].length; j++) {
            System.out.println(threeDimArray[k][i][j]);
        }
    }
}

使用案例分享

假设我们需要填充一个二维数组,并计算每行的和。

int[] rowSum = new int[twoDimArray.length];
for (int i = 0; i < twoDimArray.length; i++) {
    int sum = 0;
    for (int j = 0; j < twoDimArray[i].length; j++) {
        sum += twoDimArray[i][j];
    }
    rowSum[i] = sum;
    System.out.println("第 " + (i + 1) + " 行的和是: " + sum);
}

应用场景案例

在游戏开发中,多维数组可以用于表示地图或游戏面板的状态。

// 假设使用二维数组表示游戏面板,1表示障碍物,0表示空地
int[][] gameBoard = {
    {0, 1, 0, 0},
    {0, 0, 1, 0},
    {1, 0, 0, 1}
};
// 遍历游戏面板,打印出障碍物的位置
for (int i = 0; i < gameBoard.length; i++) {
    for (int j = 0; j < gameBoard[i].length; j++) {
        if (gameBoard[i][j] == 1) {
            System.out.println("(" + i + ", " + j + ") 有障碍物");
        }
    }
}

优缺点分析

优点

  • 多维数组提供了一种直观的方式来表示和操作具有多个维度的数据。
  • 它们在需要按行、列或其他维度分组数据时非常有用。

缺点

  • 多维数组的内存分配是连续的,这可能导致内存使用上的不灵活。
  • 错误地访问或修改多维数组可能导致难以发现的bug。

核心类方法介绍

尽管Java没有专门针对多维数组的类,但.length属性仍然适用,用于获取每个维度的长度。

测试用例

以下是使用main函数的一个测试用例,演示了二维数组的初始化、访问和遍历。

测试代码

/**
 * @Author ms
 * @Date 2024-07-31 11:26
 */
public class Test4 {
    public static void main(String[] args) {
        int[][] twoDimArray = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
        };

        // 访问二维数组的元素
        System.out.println("元素 [1][1]: " + twoDimArray[1][1]);

        // 遍历二维数组
        System.out.println("遍历二维数组:");
        for (int i = 0; i < twoDimArray.length; i++) {
            for (int j = 0; j < twoDimArray[i].length; j++) {
                System.out.print(twoDimArray[i][j] + " ");
            }
            System.out.println();
        }
    }
}

测试代码执行结果

  根据如上测试用例,我本地演示结果展示如下,仅供参考哈,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。

  这段Java代码是一个完整的程序,它演示了如何在Java中使用二维数组。下面是对代码的逐行解释,包括注释部分:

  1. 以多行注释形式提供了作者信息和日期,这是一种常见的编程习惯,用于记录代码的编写者和编写时间。
/**
 * @Author ms
 * @Date 2024-07-31 11:26
 */
  1. public class Test4:定义了一个名为Test4的公共类。

  2. public static void main(String[] args):这是程序的入口点,main方法,它接受一个字符串数组args作为参数。

  3. int[][] twoDimArray = { ... };:声明并初始化了一个名为twoDimArray的二维整型数组。这个数组被初始化为一个3x3的矩阵,即3行3列,填充了从1到9的整数。

  4. System.out.println("元素 [1][1]: " + twoDimArray[1][1]);:访问并打印二维数组中索引为[1][1]的元素,根据0索引,这代表第二行第二列的元素,其值为5。

  5. System.out.println("遍历二维数组:");:打印出将要遍历二维数组的提示信息。

7-13. 这是一个嵌套的for循环,用于遍历二维数组的每一行和每一列。循环内部使用System.out.print来打印当前元素的值,并且每行结束后使用System.out.println()换行。

当这段代码执行时,它将首先打印出二维数组中[1][1]位置的元素,即数字5。然后,它将遍历整个二维数组,按行打印出所有的元素,输出结果将类似于:

元素 [1][1]: 5
遍历二维数组:
1 2 3 
4 5 6 
7 8 9 

这段代码展示了二维数组的基本操作,包括初始化、元素访问和遍历。二维数组在Java中非常有用,特别是在需要矩阵运算或处理具有行和列结构的数据时。

代码分析

  针对如上示例代码,这里我给大家详细的代码剖析下,以便于帮助大家理解的更为透彻,帮助大家早日掌握。

这段Java代码演示了如何使用和操作二维数组。下面是对代码的逐行解释:

  1. public class MultiDimensionalArrayTest:定义了一个名为MultiDimensionalArrayTest的公共类。

  2. public static void main(String[] args):这是程序的入口点,main方法,它接受一个字符串数组args作为参数。

  3. int[][] twoDimArray = { ... };:声明并初始化了一个名为twoDimArray的二维整型数组。这个数组被初始化为一个3x3的矩阵,即3行3列。

  4. System.out.println("元素 [1][1]: " + twoDimArray[1][1]);:访问并打印二维数组中第二行第二列的元素(注意索引从0开始,所以[1][1]实际上是第二行第二列)。

  5. System.out.println("遍历二维数组:");:打印出将要遍历二维数组的提示信息。

6-12. 这是一个嵌套的for循环,用于遍历二维数组的每一行和每一列。循环内部使用System.out.print来打印当前元素的值,并且每行结束后使用System.out.println()换行。

当这段代码执行时,它将首先打印出二维数组中[1][1]位置的元素,即数字5。然后,它将遍历整个二维数组,按行打印出所有的元素,输出结果将类似于:

元素 [1][1]: 5
遍历二维数组:
1 2 3 
4 5 6 
7 8 9 

这段代码很好地展示了如何在Java中声明、初始化、访问和遍历二维数组。二维数组在许多应用场景中都非常有用,例如在处理矩阵运算、图形界面编程或游戏开发中的地图表示等。

小结

多维数组是Java中一种强大的数据结构,能够表示复杂的数据集合。通过理解如何声明、初始化、访问和遍历多维数组,开发者可以更有效地解决多维度数据处理的问题。

总结

本文介绍了Java中多维数组的使用方法,包括声明、初始化、访问和遍历。多维数组在处理具有多个维度的数据时非常有用,但也需要仔细管理以避免错误。希望读者能够通过本文加深对Java多维数组操作的理解,并在适当的场景中应用它们。
… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值