对于Java数组和对象数组内存分配的理解

Java中数组的内存分配

关于数组变量:

  • 本质上,数组变量是数组的管理者而非数组本身;
  • 数组变量之间的赋值是管理权限的赋予;
  • 数组变量之间的比较是判断是否管理同一个数组。

所以要由一个数组得到一个和它完全一样的数组,要采用遍历赋值的方法。

Java一维数组的内存分配

堆区中分配空间后会把每个数组元素初始化为0。array是引用变量,它在栈区占用的空间大小为4bytes
对于Java数组和对象数组内存分配的理解
由此可以看出,数组变量其实就是指针。它存储着数组元素在堆区的首地址。

Java中对象数组的内存分配

创建对象数组:Department[] dept = new Department[100];
dept是引用变量。
内存分配关键在于new
对象数组的默认初始化全部是null,也就是不指向任何对象。所以想要真正初始化,就要:dept[0] = new Department();
这一内存分配模型也适用于二维数组。
对于Java数组和对象数组内存分配的理解
从图中可以看出,对象数组变量其实就是指针的指针