1、一维数组的内存分析
栈里面放局部变量
堆里面放new出来的结构,对象,数组
例如以下代码:
首先创建了一个arr数组并赋值1,2,3(int类型数组的默认值为0),arr为变量存放在栈中,并且有一个地址,指向了栈中的对象.
然后又创建了String类型的数组arr1,存放在栈中,并且有一个地址,指向了堆中的元素,给arr1里面第一个位置赋值为"刘德华",第二个位置赋值为"张学友"(String类型的数组默认值为null).
最后将arr1定义了一个String数组,同样有一个不同的地址值,指向其堆中的元素.
这里我们虽然看到"刘德华"是在堆中,但其实堆中他的位置放的是地址值,这个地址值指向了常量池中。真实的"刘德华"并不在其中,而在常量池中,现在所在位置应该为地址值
2、二维数组的内存分析
这里和一维数组基本一致,我们就不多做分析了。
引用类型变量要不存的就是null 要不就是地址值