美文网首页从零学Java笔录
从零学java笔录-第24篇 数组3 图解一维数组在内存中

从零学java笔录-第24篇 数组3 图解一维数组在内存中

作者: 凯哥Java | 来源:发表于2017-07-04 12:29 被阅读12次

    本节主要内容:

    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

    相关文章

      网友评论

        本文标题:从零学java笔录-第24篇 数组3 图解一维数组在内存中

        本文链接:https://www.haomeiwen.com/subject/cznthxtx.html