public static boolean  put(String key) {       return  new abc().set(key);
    }---------------------以上的静态方法,里面NEW了一个新类,我想问的问题是静态方法只实例一次,那里面new的方法怎么处理的,如果多次调用,里面会多次new吗,还是一次,多此调用后,里面new的对象哪里去了?请大虾指教,谢谢

解决方案 »

  1.   

    你在外边new一个就可以重复使用了,但是你每次往里set的东西都会把上次的覆盖掉就是了。
      

  2.   

    new 会执行多次static方法指的是该方法被该类的所有对象所共有,与内部的执行无关你可以在方法体内打印一下进行验证
      

  3.   


    我想问的是静态方法内部new的对象是怎么处理的~
      

  4.   


    我想问的是静态方法内部new的对象是怎么处理的~不太明白你意思?
    静态方法内每次new多会产生一个新的abc对象,原来的对象会一直存在(只不过上面的方法,表面上看是覆盖掉了),直到垃圾回收器进行回收才会失效
      

  5.   

    静态方法只会实例化一次,但会被多次调用,每次调用,都会产生一个类Abc的对象。只看楼主的代码,没有任何引用指向这些对象,因此无法对其进行操作。这些对象存在于为程序划分的内存中在合适时机,垃圾回收机制会对这些对象进行处理
      

  6.   

    每次new都产生新的匿名对象,只不过方法结束就变垃圾了。
      

  7.   

    new 的对象等回收,因为已经没有引用
      

  8.   

    new的对象是没有被覆盖的,他们会在不被使用的时候被垃圾回收机制杀掉,所以你调用多少次静态方法就会有多少个对象。
      

  9.   

    5楼正解。调用一次就会覆盖一次。 所有new的对象,他们共用一个方法,每个对象调用的时候都是调用的这个方法。  java内存分析:http://blog.csdn.net/lovesummerforever/article/details/8734278
      

  10.   

    综上所述,有两种观点:
    1,静态方法里面new的内存对象,每使用一次就会被丢弃,等待垃圾回收;
    2,静态方法每调用一次,里面new的内存对象都会被覆盖。楼下投票标记,支持自己的观点,或者有更好的观点!!!