引用类型肯定是存放在栈里的.这个是无须怀疑的.当定义的是一个引用类型的变量时,JAVA会在栈里开辟一块内存存放引用变量,然后在堆中开辟一块存放该对象的内存.最后将该引用变量指向堆中的内存.我喜欢用实践来证明一些问题.还是用下面的例子来说明问题吧!//定义一个类型为A的类public class A { public int i; publicvoid display(){System.out.println(i); }}//再定义一个类型为B的类,在构造这个类时产生一个A的对象public class B { publicA a; public B(){a=new A(); } }//编写测试类public class Test {public static void main(String[] args){
B b=new B();System.out.println("初始值:"+b.a.i);A aa=b.a;aa.i=33; //改变另一个对象i的值,看是不是影响到b中a对象中的i的值System.out.println("类B中A类i的值:"+b.a.i+"\t重新定义A类i的值:"+aa.i);}}输出:初始值:0类B中A类i的值:33 重新定义A类i的值:33结果证明改变a值的同时也改变了b中a的值.