Java 快速入门 知识精简(3)二维数组

二维数组

如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像Excel中的表格一样。

声明

二维数组声明的语法格式:

// 推荐
元素的数据类型[][] 二维数组的名称;

// 不推荐
元素的数据类型  二维数组名[][];
// 不推荐
元素的数据类型[]  二维数组名[];

示例

int[][] array;

静态初始化

格式:

int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};

定义一个名称为arr的二维数组,二维数组中有三个一维数组

  • 每一个一维数组中具体元素也都已初始化
    • 第一个一维数组 arr[0] = {3,8,2};
    • 第二个一维数组 arr[1] = {2,7};
    • 第三个一维数组 arr[2] = {9,0,1,6};
  • 第三个一维数组的长度表示方式:arr[2].length;
  • 注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。

举例

int[][] arr = {{1,2,3},{4,5,6},{7,8,9,10}};//声明与初始化必须在一句完成

int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9,10}};

int[][] arr;
arr = new int[][]{{1,2,3},{4,5,6},{7,8,9,10}};

错误方式

arr = new int[3][3]{{1,2,3},{4,5,6},{7,8,9,10}};

// 错误,静态初始化右边new 数据类型[][]中不能写数字

动态初始化

先声明后使用,使用动态初始化方式。

格式1:规则二维表:每一行的列数是相同的

(1)确定行数和列数

元素的数据类型[][] 二维数组名 = new 元素的数据类型[m][n];

// 其中,m: 表示这个二维数组有多少个一维数组。或者说二维表有几行
// 其中,n: 表示每一个一维数组的元素有多少个。或者说每一行有几个单元格
// 此时创建完数组,行数、列数确定,而且元素也都有默认值

(2)再为元素赋新值

二维数组名[行下标][列下标] = ;

举例:

int[][] arr = new int[3][2];

  • 定义了名称为arr的二维数组
  • 二维数组中有3个一维数组
  • 每一个一维数组中有2个元素
  • 一维数组的名称分别为arr[0], arr[1], arr[2]
  • 给第一个一维数组第1脚标位置赋值的写法是:arr[0][1] = 78;

格式2:不规则:每一行的列数不一样

(1)先确定总行数

元素的数据类型[][] 二维数组名 = new 元素的数据类型[总行数][];

示例

int[][] arr = new int[3][];

说明

1)此时只是确定了总行数,相当于该二维数组中有3个一维数组。

2)每一行里面现在是null,每个一维数组都是默认初始化值null

3)错误写法int[][] arr = new int[][3]; 

(2)再确定每一行的列数,创建每一行的一维数组

二维数组名[行下标] = new 元素的数据类型[该行的总列数];

示例

arr[0] = new int[3];         

arr[1] = new int[1];         

arr[2] = new int[2];

说明

1)对这个三个一维数组分别进行初始化

2)new的行的元素有默认值了,没有new的行还是null

(3)再为元素赋值

二维数组名[行下标][列下标] = 值;

举例:

arr[1][0] = 10;

数组的长度和角标

二维数组的长度(行数):

        1)二维数组名.length

二维数组的某一行:

        1)二维数组名[行下标],此时相当于获取其中的一组数据。

        2)二维数组的每一行是一个一维数组

        2)行下标的范围:[0, 二维数组名.length-1

某一行的列数:

        1)二维数组名[行下标].length   

某一个元素:

        1)二维数组名[行下标][列下标

        2)先确定行,再确定列。

应用举例1:

某公司2022年全年各个月份的销售额进行登记。按月份存储,可以使用一维数组。如下:

int[] monthData = new int[]{23,43,22,34,55,65,44,67,45,78,67,66};

如果改写为按季度为单位存储怎么办呢?

int[][] quarterData = new int[][]{{23,43,22},{34,55,65},{44,67,45},{78,67,66}};

应用举例2:

高一年级三个班级均由多个学生姓名构成一个个数组。如下:

String[] class1 = new String[]{"段誉","令狐冲","任我行"};

String[] class2 = new String[]{"张三丰","周芷若"};

String[] class3 = new String[]{"赵敏","张无忌","韦小宝","杨过"};

那从整个年级看,我们可以声明一个二维数组。如下:

String[][] grade = new String[][]{{"段誉","令狐冲","任我行"},{"张三丰","周芷若"},{"赵敏","张无忌","韦小宝","杨过"}};

二维数组的遍历

二维数组的遍历需要两层for循环,一层循环行数,一层遍历列元素

for(int i=0;  i<demoArrayName.length;  i++){         //二维数组对象.length
        for(int j=0;  j<demoArrayName[i].length;  j++){        //二维数组行对象.length
               System.out.print(demoArrayName[i][j]);
        }
        System.out.println();
}

//1、声明二维数组,并确定行数和列数

int[][] arr = new int[4][5];

//2、确定元素的值

for (int i = 0; i < arr.length; i++) {

        for (int j = 0; j < arr.length; j++) {

                arr[i][j] = i + 1;

        }

}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tangy范

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值