本节主要内容:
1:一维数组在动态赋值在内存中图解。
2:本节总结&下节预告
本文出处:《凯哥陪你学系列之java基础篇.Java基本语法篇》中第24篇 数组3 一维数组在内存中图解
如上面的代码我们先读代码:
第13行 在主函数(main()) 中创建了一个int 类型的一维数组长度等于3
在对应堆、棧中。
1:声明数组&由系统初始化默认值
流程说明:
1.1:系统先执行main方法。所以main方法被压棧到最下面
而int [] arr 又是main方法的局部变量。所以也在棧中(见上图棧区)
1.2:在堆区系统先创建三个连续的区域。对应的内存地址为:[I@39ff48d8
然后给每个对应所以都赋默认值0(见上图堆区)
1.3:系统将1.2中堆区创建的连续空间的地址值给arr
1.4:所以在第14行,我们输出arr在内存中的地址就是[I@39ff48d8
2:动态给数组arr赋值
第16.17.18行操作如下:
流程说明:
2.1: 在动态赋值的时候,系统先根据arr对应堆区的地址值找到对应连续空间
2.2:然后根据对应索引替换相应的值
3:输出新赋值的数据:
所以在19、20行输出的实际值就是
在堆区地址值为[I@39ff48d8的连续区域中,下标索引为1和2的值。
从上图中我们可以看到对应的值就是15 和30
所以打印到控制台上的值就是 15 和30
完整图:
思考:
以上这些为什么输入的结果如下图:
图解如下:
本节总结:
通过本节学习,需要理解:
1:一维数组动态赋值,在内存中是怎么处理的
下节预告:
通过本节学习我们知道了动态给数组赋值,既然有动态赋值,那么是不是也有静态赋值呢?静态赋值又是什么样子呢?请学习下一篇:《从零学java笔录-第25篇 数组4 数组的初始化静态初始化及内存图》
欢迎关注凯哥公众号:凯哥Java
欢迎访问凯哥个人网站:www.kaigejava.com
本文在凯哥个人网站所在位置:http://www.kaigejava.com/article/detail/94
网友评论