06-从零玩转JavaWeb-数组在内存当中的存放形式

时间:2023-03-10 07:22:06
06-从零玩转JavaWeb-数组在内存当中的存放形式

一、JVM的内存划分

  想要了解数组的内存存储,先要了解JVM的整体内存划分,详细参见第04JVM内存详解

  06-从零玩转JavaWeb-数组在内存当中的存放形式

二、数组在JVM当中的存储详解

 假如我们有如下代码:

06-从零玩转JavaWeb-数组在内存当中的存放形式

上面代码当中,创建数组的过程我们可以把它分为三步:

  1.声明int类型的数组ages int [] ages;

  2.在堆中初始化数组 new int[]{10,20,30};

  3.把被初始数组的地址赋值给ages变量

  

  06-从零玩转JavaWeb-数组在内存当中的存放形式

  上图是 int[] ages = new int[]{} 在内存当中的体现形式 

  可以看到ages的值其实是堆当中数组的地址

  所以你去打印数组的时候会发现,打印的是一个地址,而不是数组当中的值。

  

  当执行ages = new int[]{40,50,60} 
  在堆中初始化了一个新的数组
  把数组的地址重新赋值给了ages

  06-从零玩转JavaWeb-数组在内存当中的存放形式

  06-从零玩转JavaWeb-数组在内存当中的存放形式