困惑了好久的问题。 同感都是作为String 类的实例来调用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用new出来的动动垃圾回收器会对付的;不用new的只有自己回收了!呵呵!原则上如此! 区别在于性能上,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的实例,引用失去之后都会回收的.没有什么需要手工回收之说. 正则表达式问题,数字判断 com.ibatis.common.resources.getResourceAsReader读取配置的机制是怎么样子的 list迭代异常问题,大家来解决吧 关于ArrayList的初始化问题?在线等 看看下段程序错到那了 (很短) 谢谢 郁闷了几天的问题,大伙帮帮忙吧,文件的内容的写入 问什麽我的程序能编译通过,但运行时总是出错?? 初学Java,大家给一点建议。 如何获得CPU的序列号 怎样用applet实现在web页面上将本机文件上传到服务器上? 想考研了,想转信息管理,但什么都不知道,大家给点意见。 有谁能告诉我CHM文件的格式!(想反编译它)
不用new的只有自己回收了!
呵呵!原则上如此!
给大家做一个详细的解释:
写两个类:
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的实例,引用失去之后都会回收的.没有什么需要手工回收之说.