Java的数组,对象数组,多维数组跟引用的关系
例子
public class Obj{
int a;
}
public class Test{
public static void main(String[] args){
int array[] = int[]{2,3,4,5,6,7,8,9};
Obj o1 = new Obj();
Obj o2[] = new Obj[10];
int array2[][] = new int[10][];
}
}
数组
数组是一种引用数据类型,数组引用变量只是一个引用(跟C++中的指针类似),数组元素和数组变量在内存中
是分开存放的。数组引用变量array是存放在栈中,数组元素{2,3,4,5,6,7,8,9}存放在堆中。
对象
类也是一种引用数据类型,因此程序中o1是存放在栈内存,指向实际的Obj对象,实际的Obj对象中的成员变量a
则存放在堆中。
对象数组
由于类和数组都是一种引用数据类型,所以程序中对象数组o2实际是存放的是Obj类的引用数组,他是存放在
栈中的,对象数组元素是存放在堆中。
多维数组
多维数组是数组的扩展,他实质还是一维数组,只是数组元素也是引用,数组元素里保存的引用指向一维数组。
array2是引用,指向array[0],array2[0]也是引用,指向aray2[0][0],array2[0][0]也是引用,指向堆中的
array[0][0]元素。