Java深入浅出——一维数组和二维数组在内存中的状态图
来源:互联网 发布:尔雅网络课程明史十讲 编辑:程序博客网 时间:2024/05/19 17:25
1.一维数组
1)一维数组的定义
定义一个数组容器,有几个要素。Java是一种强数据类型的语言,必须有数据类型、容器的大小。数组为恒定容器大小,即定长。
在Java中,可以使用以下格式来定义一个数组。如下
数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
int[] x = new int[100];
2)一维数组在内存中状态
接下来,通过两张内存图来详细地说明数组在创建过程中内存的分配情况。
第一行代码 int[] x; 声明了一个变量x,该变量的类型为int[],即一个int类型的数组。变量x会占用一块内存单元,它没有被分配初始值。内存中的状态如下图所示。
图1-1 内存状态图
第二行代码 x = new int[100]; 创建了一个数组,将数组的地址赋值给变量x。在程序运行期间可以使用变量x来引用数组,这时内存中的状态会发生变化,如下图所示。
图1-2 内存状态图
2.二维数组
1)二维数组的定义及内存状态图
二维数组的定义有很多方式,接下来针对几种常见的方式进行详细地讲解,具体如下:
第一种方式:
int[][] arr = new int[3][4];
上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组,接下来通过一个图来表示这种情况,如下图所示。
图2-1 二维数组
第二种方式:
int[][] arr = new int[3][];
第二种方式和第一种类似,只是数组中每个元素的长度不确定,接下来通过一个图来表示这种情况,如下图所示。
图2-2 二维数组
第三种方式:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
上面的二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9},接下来通过一个图来表示这种情况,如图2-54所示。
图2-3 二维数组
2)二维数组总结
int[][] list = new int[n][m]ps:此处为了方便讲解,使用n和m作为值,实际不可使用未定义的n和m。
二维数组先堆内存中创建一个一维数组,一个一维数组里有n个小位置,而这个一维数组里的每个元素又存储着m个不同一维数组的首地址。特别需要注意的是:该m个一维数组也存储在堆内,并非直接存储在第一个一维数组的n个位置中,只是将它们的首地址存了过去。
list存储的也非整个二维数组,而是int[n][m]的首地址的值。即为第一个数组的首地址。
- Java深入浅出——一维数组和二维数组在内存中的状态图
- Java 数组在内存中的结构
- java 数组在内存中的结构
- Java数组在内存中的存储
- Java 数组在内存中的结构
- 图解C语言二维数组在内存中的分布方式
- 【C语言】二维数组在内存中的存储方式
- Java中的一维数组和二维数组
- 二维数组在内存中的存储方式和下标与行列的关系
- C数组与java数组在内存中的区别
- 数组在内存中的存储
- 数组在内存中的变化
- 数组在内存中的运行机制
- 数组在内存中的存储
- 二维字符数组与二维整型数组在内存中的分配及指针的问题
- JAVA 数组 一维数组和二维数组
- JAVA 数组 一维数组和二维数组
- java入门--数组(一维数组和二维数组)
- opencv11-计算不规则图像的质心
- 快速排序
- jdk安装
- Kubernetes系统架构简介
- SQL语句大全
- Java深入浅出——一维数组和二维数组在内存中的状态图
- awk 时间选取
- new和delete的用法
- 李超树 学习笔记
- Django项目之小博客
- HTTP协议结构
- JAVA JComboBox的监听事件(ActionListener、ItemListener)
- 业余时间决定了你的人生
- 欢迎使用CSDN-markdown编辑器