关于引用变量的内存,如果该引用变量定义在方法内,那么该引用变量就存储在方法所在的栈空间内
1 public class ArrTest{ 2 3 public static void main(String[] args){ 4 int[] arr1 = new int[] {10,20,30}; 5 Arr a = new Arr(); 6 a.arr(arr1); 7 } 8 } 9 10 class Arr{ 11 public static void arr(int[] i) { 12 for(int n = 0 ; n < i.length ; n++) { 13 System.out.println(i[n]); 14 } 15 } 16 }
以上数组,指向Arr对象的变量都是定义在main方法内,因此他们都存储在栈空间的栈帧内
public class TowClass {
public static void main(String[] args){
Person person = new Person();
person.heart.show();
person.show();
}
}
class Person{
public Heart heart;
public static void show() {
System.out.println("我是人");
}
}
class Heart{
public static void show(){
System.out.println("我是心脏");
}
}
以上在Person类中的成员位置创建了指向Heart的对象的变量heart,所以该变量随着main方法内指向Persion类的对象变量person创建而存在,因此,变量heart随着该对象Person的创建而存在,也因此,变量heart随着对象Person存储在堆内存中