Java基础_61.数组_内存分配

 Java 中内存分配

左边的int[] arr 会在内存中有一块区域, 专门用来存储.

 

 

 右边的new int[3]也会在内存中有一块区域, 专门用来存储.

因为 new 的动作是开辟内存空间, 所以会有一块空间产生, 这块空间可以存储三个元素.

 可以通过索引0,1,2  去访问这个这三个元素.

数组在初始化时, 会为存储空间添加默认值.

 

因为是整数, 所以默认值是0. 

 

 

 使用001 来标识这块内存空间, 001 被称为内存地址.

 接下来要把右边的赋值给左边, 也就是左边的要指向右边.

 

 在内存中是这样的, 就是 int[] arr 要指向001 这片内存空间.

 其实就是arr 指向 001, 因为001 代表的就是这块内存空间(这三个各自组成的空间)

 

之后呢, 把001 赋值给arr.

当这个动作做完之后, 第一行代码才算完成了.

 现在输出arr, arr 的值是001, 所以在控制台输出001, 也就是输出内存地址.

arr 指向左边(栈内存)的001, 然后通过左边(栈内存)的001 找到右边(堆内存)的001.

 右边(堆内存) 的 001代表的是这样一块区域.

 

arr[0] 中的0, 会找到索引0, 其实最终找的是 0 索引位置的值.

 

 这样, System.out.println(arr[0])这个输出语句最终在控制台中输出的就是数据0. 

 arr[1] 同理.

  arr[2] 同理.

 

 

栈内存 存储的是局部变量, 堆内存 存储的是 new 出来的东西, new 出来的东西也称之为实体,对象.

局部变量就是定义在方法中的变量,  比如 int[] arr  就是在main 方法中写的, 所以 arr 是局部变量.

栈内存中的变量, 使用完成, 会立即消失, 比如, arr 使用完成, 就立即消失了.

 每一个new 出来的东西, 都会有一个地址值.

比如 new 出来的int[3], 有一个地址值 001.

堆内存里的东西, 使用完毕, 会在垃圾回收器空闲时被回收, 也就是堆内存里的数据使用完之后, 并不会立即消失.

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值