1. 内存中的数组
Java中的数组是一种引用类型,数组变量(引用)和数组元素在内存中是分开的。
Java中的数组变量其实就是指针。
如果想要访问数组元素,只能通过这个数组的引用变量(指针)来访问。
- 实际数组对象在堆中;
- 引用变量如果是局部变量,就在栈中(静态或全局变量也在堆上)。
访问数组元素,通过[]
运算符。
堆内存中的对象不会随方法结束和销毁。只有没有任何引用变量引用它时,系统垃圾回收器才会在合适时候回收它。
2. 数组引用变量的赋值
public class ArrayInRam
{
public static void main(String[] args)
{
int[] a = {1,2,3}; //静态初始化
var b = new int[4]; //动态初始化
// 此时a和b都是int[]类型,因此可以将a的值赋给b
b = a;
}
}
只要类型兼容,就可以让一个数组变量指向另一个实际的数组(指针的赋值)。
第5-6行:初始化4块内存:a,b是两个引用变量(指针),在栈上;另有长度为3和长度为4的两个数组,在堆上,如下图:
第8行:变量赋值。这实际上是让b指向a指向的数组对象。如下图: