Java基础 | 深入理解多维数组
Posted Hdparm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础 | 深入理解多维数组相关的知识,希望对你有一定的参考价值。
重点陈述:把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格。对于二维数组的理解,我们可以看成是一维数组。其实,从数组底层的运行机制来看,其实没有多维数组。
0x00、二维数组[][]:数组中的数组
动态和静态初始化规则如下
规则1:
格式1(动态初始化):int[][] arr = new int[3][2];
定义了名称为arr的二维数组,二维数组中有3个一维数组,每一个一维数组中有2个元素,一维数组的名称分别为arr[0], arr[1], arr[2],给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
规则2:
格式2(动态初始化):int[][] arr = new int[3][];
二维数组中有3个一维数组,每个一维数组都是默认初始化值null (注意:区别于格式1),可以对这个三个一维数组分别进行初始化,arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2]
规则3:
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[][]arr = new int[][3];
是经典的错误写法,因为不同于C++的写法。 - 注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。
- 注意Java中多维数组不必都是规则矩阵形式
0x02、深入理解多维数组与内存地址的关系
因为Java编程语言中的二维数组只不过是数组的数组。所以在Java二维数组中,数据存储在行和列中,我们可以使用行索引和列索引来访问记录(就像一个Excel文件)。 如果数据是线性的,我们可以使用一维数组。然而,要处理多层次数据,我们必须使用多维数组。Java中的二维数组是多维数组的最简单形式。
数组的初始化遵循顺序执行,不能空对空。
实战代码:
分析这段代码与内存的关系:
int[][] arr = new int[3][];
arr[1] = new int[]1,2,3;
arr[2] = new int[3];
Sysout(arr[0]);//null
Sysout(arr[0][0]);//
实战代码2:
查看这段代码与内存的关系:
int[][] arr1 = new int[4][];
arr1[0] = new int[3];
arr1[1] = new int[]1,2,3;
arr1[0][2] = 5;
arr1 = new int[2][];
0x03、输出代码实例:
通过这个输出数组,可以实际观察到代码中的是什么?
class TwoDimensionalString
public static void main(String[] args)
String[][] str = new String[][]"one", "two", "three", "four","five","six";
System.out.println("Two dimensional string array elements are :\\n");
for (int i = 0; i < 3; i++)
for (int j = 0; j < 2; j++)
System.out.println("str["+i+"]["+j+"]:"+str[i][j]);
成功得到结果:
Two dimensional string array elements are :
str[0][0]:one
str[0][1]:two
str[1][0]:three
str[1][1]:four
str[2][0]:five
str[2][1]:six
0x04、总结:
在本文中,我们看到了Java中的多维数组及其用途,在Java中声明二维数组的各种方法,Java如何处理二维数组,以及JVM如何分配内存来实现二维数组,可以使用索引来访问和更改二维数组的元素,最后在Java中初始化和声明二维数组的各种方法,以及声明语句中的一些常见错误。
资料链接:
1.https://www.tutorialgateway.org/two-dimensional-array-in-java/
2.https://javatutoring.com/java-two-dimensional-array/
3.https://www.scaler.com/topics/two-dimensional-array-in-java/
以上是关于Java基础 | 深入理解多维数组的主要内容,如果未能解决你的问题,请参考以下文章