对于Java数组和对象数组内存分配的理解
Java中数组的内存分配
关于数组变量:
- 本质上,数组变量是数组的管理者而非数组本身;
- 数组变量之间的赋值是管理权限的赋予;
- 数组变量之间的比较是判断是否管理同一个数组。
所以要由一个数组得到一个和它完全一样的数组,要采用遍历赋值的方法。
Java一维数组的内存分配
堆区中分配空间后会把每个数组元素初始化为0。array是引用变量,它在栈区占用的空间大小为4bytes。
由此可以看出,数组变量其实就是指针。它存储着数组元素在堆区的首地址。
Java中对象数组的内存分配
创建对象数组:Department[] dept = new Department[100];
dept是引用变量。
内存分配关键在于new。
对象数组的默认初始化全部是null,也就是不指向任何对象。所以想要真正初始化,就要:dept[0] = new Department();
这一内存分配模型也适用于二维数组。
从图中可以看出,对象数组变量其实就是指针的指针。