二维数组

  数组可以分为一维数组、二维数组、多维数组。在实际项目中,二维数据是不太推荐用的,而多维数组基本是不允许使用的。多维数组在使用的过程中,不太好理解,不太好去拆分,因为有很多限制问题,比如下标。
  因此在数组的学习中,掌握一维数组和二维数组即可。

二维数组的理解

  二维数组类似Excel表结构,Excel表的信息是以行和列的形式组织的。二维数组的第一个元素下标表示元素所在行,第二个下标表示元素所在列。
  Java中的二维数组是数组的数组,即它是一个特殊的一维数组,它的每一个元素是一个一维数组。

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

  如定义的数组arr,它是长度为3的一维数组,arr中每个元素都是一个长度为3的一维数组。

  二维数组并不要求每一个元素的数组长度相同。例如,下面代码中的定义的二维数组也是可以的。

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

  上面代码定义的arr是一个长度为3的一维数组,它的第一个元素是长度为2的一维数组,第二个元素是长度为4的一维数组,第三个元素是长度为5的一维数组。

创建

声明

  以下三种声明方式都可以声明二维数组,推荐第一种声明方式。

数组元素类型[][] 数组名字;
数组元素类型[] 数组名字[];
数组元素类型 数组名字[][];

  示例:

int[][] arr1;
int[] arr2[];
int arr3[][];

  和一维数组相同的是,如果只是完成上面的声明过程,数组是不能使用的,因为还没有给它分配内存空间,此时arr1、arr2、arr3都是null。

声明的同时初始化

  二维数组也有和一维数组对应的3种声明时初始化的方式。
  例如:

int[][] arr1 = new int[2][3];
int[][] arr2 = new int[2][];
arr2[0] = new int[2];
arr2[1] = new int[3];
int[][] arr3 = new int[][] { { 1, 2 }, { 1, 2, 3 } };
int[][] arr4 = { { 1, 2 }, { 1, 2, 3 } };

  如果二维数组的每个元素的数组长度相同,可以采用arr1这种方式,此时数组元素的值是对应类型的默认值,也可以采用arr3和arr4这种直接将数值对应元素的值输入的方式。
  如果二维数组的每个元素的数组长度不同,可以采用arr2的方式,此时数组元素的值是对应类型的默认值,也可以采用arr3和arr4这种直接将数值对应元素的值输入的方式。

先声明,后初始化

  和一维数组一样,如果是先声明后初始化的情况下,不能使用上面的arr4数组的方式。
在这里插入图片描述

补充

  刚才我们碰到了这样一条语句 int[][] arr2 = new int[2][]; 这条语句表示此时,arr2有两个元素,每个元素都是数组类型的默认值——null。

int[][] arr2 = new int[2][];
System.out.println(arr2[0]);
System.out.println(arr2[1]);

  结果:

null
null

判空

  在一维数组中,我们列举了一维数组有变量、没对象,有变量、有对象但是长度为0的情况。现在思考一下,二维数组有变量、没对象和有变量、有对象但是长度为0的情况。

int[][] arr1;// 有变量、没对象
int[][] arr2 = new int[][] {};//有变量、有对象、长度为0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值