如:
class A{}
public class B{
   public static void main(String[] args){
      new A();  //这个在栈里事实上有引用产生吗?
   }
}

解决方案 »

  1.   

    没有引用指向这个匿名对象,在stack里当然没创建引用。这个匿名对象一创建后就是垃圾
      

  2.   

    在heap里创建了一个对象,创建后这个对象就变成了unreacheable,下次gc的时候可能被回收.
      

  3.   

    class A{
       public void f(){}
    }
    new A().f();
    调用这个方法怎么进行呢?我认为是有引用的。
    要不然如何找到它的众多方法中的一个。
    只是这个引用等一调用结束,马上消失了,是吧??
      

  4.   

    [Quote=引用楼主 Java_gannbare 的帖子:]
    如: 
    class A{} 
    public class B{ 
      public static void main(String[] args){ 
          new A();  //这个在栈里事实上有引用产生吗? 
      } 

    答:main()中的new A();在栈里事实上有引用产生.
      

  5.   


    new A();这个语句虽然说不返回什么,但new其实还是返回了对象的地址,如果有 A a = new A(),则这个地址就被保存在stack里a那,但是就这个语句来说在stack里是没有创建引用的,只不过地址没传递出去而是直接就用这个地址来指向对象从而来调用方法,就类似于a.f
      

  6.   

    答:
    栈里当然创建了A的引用.new A()这句本身就是先将对象A的new出来的引用入栈,然后再调用A的构造器进行初始化,然后再用栈中的已经初始化过对象空间的这个引用来调用方法f().整个这一个过程中,A对象的引用一直在栈中.