比如说: 
  
  myclass  mc=new myclass();  //myclass  是自定义的类
  
  我总想从内存的角度去理解,mc是从栈上分配一块内存,后边的对象是从堆上分配一块内存
  不知道这么理解对不?怎么更深理解这个 reference  那:  int i=5;
  用内存的角度又怎么理解?
  实在想不懂,请赐教!!!

解决方案 »

  1.   

    Java 都在 堆里,在栈里面的我想只是个 句柄吧 。myclass mc ; 这个并不是和 C++ 一样 立即就分配了空间, 只是说他将要指向一个 myclass 对象的实例。
      

  2.   

    int i=5; 基本型别直接在栈中完成而对复杂对象   
    首先myclass  mc 是在栈中建立myclass的一reference ,但并没指向具体对象实例;
    myclass  mc=new myclass(); 是在堆中建立具体一myclass的实例,并将该对象链向mc栈内存和堆内存机制不同。后者可支持动态机制,具有很多灵活性,但同时牺牲了些其他代价