同感
都是作为String 类的实例来调用

解决方案 »

  1.   

    用new出来的动动垃圾回收器会对付的;
    不用new的只有自己回收了!
    呵呵!原则上如此!
      

  2.   

    区别在于性能上,String temp = new String("test");是反例,不推荐使用的,做了很多无用功.
    给大家做一个详细的解释:
    写两个类:
    public class C1 {
        private static String temp = new String("test");
    }

    public class C2 {
        private static String temp = "test";
    }
    这两个类C1和C2是等效的,编译它们.javac C1.java和javac C2.java
    然后反汇编:javap -c C1和javap -c C2分别看看结果:
    看看C1的静态初始化过程:
    Method static {}
       0 new #2 <Class java.lang.String>
       3 dup
       4 ldc #3 <String "test">
       6 invokespecial #4 <Method java.lang.String(java.lang.String)>
       9 putstatic #5 <Field java.lang.String temp>
      12 return
    再看看C2的静态初始化过程:
    Method static {}
       0 ldc #2 <String "test">
       2 putstatic #3 <Field java.lang.String temp>
       5 return
    孰优孰劣,这下就清楚了吧?所以new String("aaa")的用法是绝对不要出险的.
    楼上二位的回答是有问题的,和垃圾回收没有关系,都是String的实例,引用失去之后都会回收的.没有什么需要手工回收之说.