多维数组

1. 多维数组的使用

1.1 概述

  • Java 语言里提供了支持多维数组的语法。
  • 如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像Excel中的表格、围棋棋盘一样。
  • 对于二维数组的理解,可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。
  • 其实,从数组底层的运行机制来看,其实没有多维数组。

2. 声明与初始化

2.1 声明

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

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

注意:int[] x, y[]; //x是一维数组,y是二维数组

2.2 静态初始化

格式:

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是二维数组。

2.3 动态初始化

如果二维数组的每一个数据,甚至是每一行的列数,需要后期单独确定,那么就只能使用动态初始化方式了。动态初始化方式分为两种格式:

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

//(1)确定行数和列数
元素的数据类型[][] 二维数组名 = new 元素的数据类型[m][n];
//其中,m:表示这个二维数组有多少个一维数组。或者说一共二维表有几行
//其中,n:表示每一个一维数组的元素有多少个。或者说每一行共有一个单元格

//此时创建完数组,行数、列数确定,而且元素也都有默认值

//(2)再为元素赋新值
二维数组名[行下标][列下标] = 值;

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

//(1)先确定总行数
元素的数据类型[][] 二维数组名 = new 元素的数据类型[总行数][];

//此时只是确定了总行数,每一行里面现在是null

//(2)再确定每一行的列数,创建每一行的一维数组
二维数组名[行下标] = new 元素的数据类型[该行的总列数];

//此时已经new完的行的元素就有默认值了,没有new的行还是null

//(3)再为元素赋值
二维数组名[行下标][列下标] = 值;

3. 数组的长度和角标

  • 二维数组的长度/行数:二维数组名.length

  • 二维数组的某一行:二维数组名[行下标],此时相当于获取其中一组数据。它本质上是一个一维数组。行下标的范围:[0, 二维数组名.length-1]。此时把二维数组看成一维数组的话,元素是行对象。

  • 某一行的列数:二维数组名[行下标].length,因为二维数组的每一行是一个一维数组。

  • 某一个元素:二维数组名[行下标][列下标],即先确定行/组,再确定列。

4. 二维数组的遍历

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

5. 内存解析

二维数组本质上是元素类型是一维数组的一维数组。

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

1562112672215
1562112672215

image.png

//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;  
    }  
}

1562113179785

image.png

//1、声明一个二维数组,并且确定行数  
//因为每一行的列数不同,这里无法直接确定列数  
int[][]  arr = new int[5][];  
​  
//2、确定每一行的列数  
for(int i=0; i<arr.length; i++){  
    /*  
            arr[0] 的列数是1  
            arr[1] 的列数是2  
            arr[2] 的列数是3  
            arr[3] 的列数是4  
            arr[4] 的列数是5  
            */  
    arr[i] = new int[i+1];  
}  
​  
//3、确定元素的值  
for(int i=0; i<arr.length; i++){  
    for(int j=0; j<arr[i].length; j++){  
        arr[i][j] = i+1;  
    }  
}

1562113981079
image.png

Java基础

一维数组

2025-8-8 10:26:13

Java基础

数组的常见算法

2025-8-8 10:26:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索