Java教程

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

本文主要是介绍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.

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

 

 

 

这篇关于Java基础_61.数组_内存分配的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!