Python 官方文档:入门教程 => 点击学习
目录1.数组内存图2.两个数组的内存图3.一个变量两个数组容器的内存图4.两个变量指向一个数组容器的内存图前言:本文章主要讲解数组的内存图,更好地掌握数组以及数组调用流程,话不多说开
前言:本文章主要讲解数组的内存图,更好地掌握数组以及数组调用流程,话不多说开讲。
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
--结束END--
本文标题: Java基础知识精通数组的内存分析
本文链接: https://www.lsjlt.com/news/147660.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0