发布时间:2024-06-30 11:01
前言:本文章主要讲解数组的内存图,更好地掌握数组以及数组调用流程,话不多说开讲。
1.一个数组的内存图
int[] arr = new int[3]; //刚开始定义数组arr为int型包含三位数字,初始化为0,0,0. arr[0] = 12; //数组arr第一位被赋值12 arr[2] = 14; //数组arr第三位被赋值14 System.out.println(arr[0]); //12 System.out.println(arr[1]); //0 System.out.println(arr[2]); //14 System.out.println(arr); //[I@7852e922
解释
如下图:栈相当于存放数组变量的地址,堆相当于存放数组里面的元素而他们的下标就相当于房间号。
在这里我临时定义arr的地址是0x001等同于[I@7852e922。
下面我开始介绍一下数组的调用流程 :
调用完成之后,栈和堆里的数据就会消失。
看懂了一个数组内存图,下面几个就会看懂啦。
int[] arr1 = new int[]{23,12,5}; //一开始就初始化为23、12、5。 System.out.println(arr1[0]); //23 System.out.println(arr1[1]); //12 System.out.println(arr1[2]); //5 System.out.println(arr1); //0x001 arr1[0] = 13; //把13赋值给arr1第一位。 System.out.println(arr1[0]); //13 int[] arr2 = {14,18,15}; //与上面同理 System.out.println(arr2[0]); //14 System.out.println(arr2[1]); //18 System.out.println(arr2[2]); //15 System.out.println(arr2); //0x002 arr2[1] = 12; //赋值给arr2第二位为12 System.out.println(arr2[1]); //12
int[] arr = new int[3]; //定义一个int型的arr数组,包含三个元素初始化为0。 System.out.println(arr[0]); // 0 arr[0] = 3; System.out.println(arr[0]); //3 System.out.println(arr); //0x001 arr = new int[5]; //重新赋值int型的arr数组,包含5个元素初始化为0,并且数组地址也相应改变。 System.out.println(arr[0]); // 0 arr[0] = 5; System.out.println(arr[0]); // 5 System.out.println(arr); //0x002 如果不明白看下图
int[] arr1 = new int[3]; //定义一个int型的arr数组,包含三个元素初始化为0。 System.out.println(arr1[0]); //0 arr1[0] = 12; System.out.println(arr1[0]); //12 System.out.println(arr1); //0x001 int[] arr2 = arr1; //把arr1变量赋值给arr2 System.out.println(arr2[0]); //12 arr2[0] = 13; System.out.println(arr2[0]); //13 System.out.println(arr2); //0x001 System.out.println(arr1[0]); //13
RSA算法解密 javax.crypto.BadPaddingException: Decryption error 异常
华为鸿蒙os系统转正,华为鸿蒙OS系统即将转正!谷歌也霸气官宣:将放弃安卓启用新系统...
独立产品灵感周刊 DecoHack #20 - 如何停止来自金钱的压力
Python自动化办公小程序:实现报表自动化和自动发送到目的邮箱
译:Two-Stream Convolutional Networks for Action Recognition in Videos
python 的env 项目创建docker 镜像 demo