不会,放心用吧。如果没有后面的a=new A(2);那有a=null才有作用。

解决方案 »

  1.   

    嗯, 没问题的. 不过编码时也不要一味依赖GC, 有时自己显式保证一下赋为null还是个好习惯.
      

  2.   

    不能,
    =null不给分空间吧
      

  3.   

    感觉两个null都没什么用处。
      

  4.   

    也就是说如果把"a=null"去掉是没有任何影响的?
      

  5.   

    第一次new的对象会被垃圾收集器收集的.因为没有引用指向它了,如果还有引用指向它,就不会被回收.这就是垃圾收集器的机制,只收集没有引用的对象.
      

  6.   


    第二次a=null会使垃圾收集器在适当时机释放第一次的new
      

  7.   

    你所担心的“运行的时候会不会造成像内存泄漏这样的问题”完全不存在,这正是JAVA不同于C的一个优越之处,在JAVA中,只要某个对象没有任何引用指向它,那么垃圾回收器就会自动将它所占的内存回收,而不需要你写程序去回收它。
    同时第二个a=null完全没有任何意义。因为在本程序中a是对象变量,new A(1)会生成一个对象,new A(2)则生成另一个对象,a 开始指向一个对象,后又指向另一对象,则前一个对象即new A(1)所生成的对象将没有任何对象变量指向它,那么JVM将会自动回收它所占的内存。而a本身是对象变量,并非对象,所以a=null完全没有任何意义,这句话并不会迫使系统将第一个对象回收。作为初学者你可看下THINKING IN JAVA