Java基础:二维数组

概述:

用来存放相同类型数据的容器叫做数组。我们学过的数组是存放基本数据类型的,而且这些元素呈线性排列,所以这种数组称为一维数组。其实数组元素的数据类型可以是任意类型,一维数组也不例外,所以我们把存放一维数组的容器称为二维数组。说白了就是一维数组的数组,二维数组是特殊的一维数组。在二维数组中包含的数组称为行,每个数组里面的元素称为列。有了行与列的概念,二维数组元素在数学中的排列方式就可以看成矩阵。

二维数组定义和初始化:

动态初始化

格式:

数据类型[][] 数组名 = new 数据类型[m][n];

m 表示二维数组可以存放m个一维数组,相当于这个矩阵的“行数”

n 每个一维数组有n个元素,相当于这个矩阵的“列数”

静态初始化

格式:

数据类型[][] 数组名 = {{数据1, 数据2, ...},{数据3, 数据4, ..}, ...};

请注意:Java并不是直接支持二维数组的,而是可以将一维数组作为数组的元素,所以静态初始化时必然出现两层大括号。

以下语句

int arr[][] = {1, 2, 3, 4, 5, 6}

在Java中会弹出如下错误:

所以静态初始化二维数组时同一行元素都要用大括号括起来

二维数组的索引和遍历

二维数组的索引号和一维数组是相似的,一维数组索引号是从0开始到长度 - 1,但二维数组是有两个索引号,其中第一个索引号是数组中所包含的一维数组的编号,从0到所含一维数组数量 - 1;第二个索引号是所含一维数组中的元素的编号,从0到所含一维数组长度 - 1。我们可以将第一个索引号理解为行索引,第二个索引号称为列索引。

在遍历之前,我们需要知道数组的一个属性——数组名.length,这是指一维数组的长度,也就是一维数组可包含几个元素。But,在二维数组中,数组名.length指的是数组中包含了几个一维数组,数组名[行索引].length指的是二维数组所含一维数组的长度,也就是所含的一维数组包含了几个元素。

一维数组用一个for循环即可遍历,而二维数组需要双层for循环,外层for循环用于访问二维数组的某一行,内层for循环访问二维数组当前行的某一列,遍历格式如下

for (int i = 0; i < 数组名.length; i++) {
    for (int j = 0; j < 数组名[i].length; j++) {
        
        //你的代码
        
        
        
    }
}

数组名[i][j]表示二位数组里面所含第i + 1个一维数组中的第j + 1个元素,说白了就是矩阵中的第i + 1行第j + 1列。

二维数组的使用场景

我们学到一维数组和方法之后了解到想在函数中返回多个数据,可将函数返回值定义成数组类型,要是在返回多组数据时,二维数组就可以派上用场。现实生活中的“成绩单”也可以用到二维数组的。

案例

小A和小B一起考了驾照,他们科目一到科目四的成绩如下

科目一科目二科目三科目四
小A93859596
小B959010098

要求用二维数组存放,并打印输出他们俩成绩加起来之后的总和

public class E {
    public static void main(String[] args) {
        //定义一个二维数组存放两人考试成绩, 行索引表示小A还是小B,列索引表示个人某一科目的成绩
        int[][] score = {{93, 85, 95, 96}, {95, 90, 100, 98}};
        //定义一个变量存放两人成绩总和
        int sum = 0;
        //遍历数组计算成绩总和
        for (int i = 0; i < score.length; i++) {
            for (int j = 0; j < score[i].length; j++) {
                //将成绩累加到总和
                sum += score[i][j];
            }
        }    
        //将所得结果打印
        System.out.println(sum);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值