版权声明
- 本文原创作者:清风不渡
- 博客地址:https://blog.csdn.net/WXKKang
一、二维数组的理解
上一篇我们学习了数组中的一维数组,现在就让我们来进行二维数组的学习,那么,什么叫二维数组呢,我们首先来观察一下 ~ ~
一维数组:int[ ] intArray = {1,2,3,4,5,6};
二维数组:int[ ][ ] intArray = {{1,2},{3,4},{5,6}};
我们先来观察一下它们的不同,首先最明显的不同就是:一维数组里的数组是由一层大括号包裹的,而二维数组是由两层大括号包括的(也就是由多个一维数组组成的),我们需要获取一维数组中的数据是只需要知道它的下标值就可以了,而二维数组我们首先需要知道这条数据在第几个内部大括号里(即所在一维数组的下标值),还需要知道数组在内部大括号的下标值,专业点来说就是:
在二维数组中有两个下标,第一个下标表示行,第二个下标表示列,如果仅仅只使用第一个下标将得到一维数组的引用(如intArray[1]),同时使用两个下标才能唯一的决定数组中的某一元素(如intArray[1][1])
注:
- 二维数组的每一个元素是一个一维数组!
- 标准的二维数组的第二维数组的长度都是相等的
二、二维数组的初始化
1、静态初始化
二维数组的静态初始化和一维数组相似,如下:
//这是一个三行两列的数组
int[][] intArray = {{1,2}{3,4}{5,6}};
2、动态初始化
动态初始化二维数组的时候,后面的第一个方括号表示有几行(也就是其中有几个一维数组),第二个方括号表示有几列(也就是每个一维数组中包含几个元素)
int[][] intArray = new int[3][2];
注: 第二个方括号内的数字可不填写,但通过赋值后可能就是不规则的二维数组
三、二维数组的访问
1、二维数组的长度
二维数组的长度要分两部分来讲,即第一维的数组长度和第二维的数组长度,例如:
int[][] intArray = new int[3][2];
我们都知道,这样创建出来的数组它有三行两列,所以它的第一维数组长度为3,第二维数组长度为2
我们知道通过动态创建二维数组还有一种方式,那就是不定义第二维数组的长度,即:
int[][] intArray = new int[2][];
那么,它能像上面那样简单的看出它的长度吗?答案肯定是不行的,因为它有可能是一个不规则二维数组,就想下面这样给intArray赋值:
intArray[0] = new int[2];
intArray[1] = new int[3];
它的第一个第二维数组的长度为2,第二个第二维数组的长度为3,那么怎么去求呢?语法:
- 第一维的数组长度是:intArray.length;
- 第二维的数组长度是:intArray[index].length;
注: index即索引(下标)的意思。
2、访问二维数组的元素
我们知道,定义一个二维数组的时候,同时使用两个下标才能决定数组中的某一元素,那么,访问二维数组的元素的时候同样需要两个下标,这样才能精确的指向数组中的某一元素,让它无处可逃,访问到之后我们就可以对其进行赋值或者取值了,示例如下:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int[][] intArray = {{1,2},{3,4},{5,6}};
//赋值
intArray[1][0] = 8;
//取值
System.out.println(intArray[1][0]);
}
}
运行这段代码打印结果为8,可以知道我们将下标为 [1][0] 的元素赋值成功且取值成功。
3、二维数组的遍历
上面我们理解二维数组的时候看出来了,二维数组的元素由两层大括号包括,就想一个苹果被两层塑料袋包裹着,我们要取出这个苹果(即获取这个数据),是不是要将这两层塑料袋一 一拆开呢?肯定是的,相对应的,遍历一维数组的时候需要一个for循环即可搞定,那么遍历二维数组则需要用到双重for循环,也就是两个for循环的前台,如下:
public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
public static void main(String[] args){
int[][] intArray = {{1,2},{3,4},{5,6}};
//外层for循环
for(int i=0;i<intArray.length;i++){
//内层for循环
for(int j=0;j<intArray[i].length;j++){
System.out.print(intArray[i][j]+" ");
}
}
}
}
解读双重for循环:我们都知道数组的下标值是从0开始的,所以内外层循环的起始值都是0;第一个for循环用来遍历出二维数组内的一个个一维数组,而不管是否为规则的二维数组,它里面的一维数组的长度则是intArray[i].length,这样,内层for循环再遍历一维数组遍历出其内的元素,一轮内循环过后,i自增变为1,内层for循环再遍历第二个一维数组,直到最后,所有的元素就全部都遍历出来了 。
好啦,今天的学习就到这里吧!记录学习,记录生活,我还是那个java界的小学生,一起努力吧!!
欢迎各位看官评论探讨哟 ~ ~ 小生在此谢过了 ~ ~