困惑了好久的问题。 同感都是作为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的实例,引用失去之后都会回收的.没有什么需要手工回收之说. java web start 怎样部署? 一直以为位运算,左移能移出正数,但发现不行,大家调下。 请问怎么使父窗口处于不可编辑装状态啊? 求UTF-16转为GB2312的代码或方法? java简单问题一 挣钱机会,会者不难!不把您的技术变成钱将是您大大的错误! 什么叫方法的空实现? 怎么让数据库中的内容只能用软件通过ODBC来查询,而不能用查询分析器或企业管理器来查看表结构和内容。 游标超出最大数。急!急!急! XML格式化问题 想考研了,想转信息管理,但什么都不知道,大家给点意见。 有谁能告诉我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的实例,引用失去之后都会回收的.没有什么需要手工回收之说.