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

本节主要内容:

1:一维数组在动态赋值在内存中图解。

2:本节总结&下节预告

本文出处:《凯哥陪你学系列之java基础篇.Java基本语法篇》中第24篇 数组3 一维数组在内存中图解

声明:本文系凯哥原创。转载请注明出处。谢谢!

本文来源:凯哥微信公众号-凯哥Java

如上面的代码我们先读代码:

第13行 在主函数(main()) 中创建了一个int 类型的一维数组长度等于3

在对应堆、棧中。

1:声明数组&由系统初始化默认值

34efaf10cc962869f0dc10329358d0eb.png

流程说明:

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行操作如下:

1192361506e718142d9f4cfccc2a1096.png

流程说明:

2.1: 在动态赋值的时候,系统先根据arr对应堆区的地址值找到对应连续空间

2.2:然后根据对应索引替换相应的值

3:输出新赋值的数据:

所以在19、20行输出的实际值就是

在堆区地址值为[I@39ff48d8的连续区域中,下标索引为1和2的值。

从上图中我们可以看到对应的值就是15 和30

所以打印到控制台上的值就是 15 和30

完整图:

32875f8edbebce6a409d92f879d21611.png

思考:

26c5b0091851d3ad1614cbf4e8304c87.png

f1db6deab30a0bdbb1bf8f932ceb1ff2.png

以上这些为什么输入的结果如下图:

1fb859fdb0c63e1fe7409e1066bbf990.png

图解如下:

9a6fae72a04823d49e6a24a50849468a.png

09ca201501c3bd8da2c7be590a3f59ab.png

本节总结:

通过本节学习,需要理解:

1:一维数组动态赋值,在内存中是怎么处理的

下节预告:

通过本节学习我们知道了动态给数组赋值,既然有动态赋值,那么是不是也有静态赋值呢?静态赋值又是什么样子呢?请学习下一篇:《从零学java笔录-第25篇 数组4 数组的初始化静态初始化及内存图》

欢迎关注凯哥公众号:凯哥Java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值