我有一个关于在java语句中使用new
的基本问题。例如,最后的return子句使用new
作为String
。为什么需要在这里创建String
?在什么样的情况下人们会选择使用new
?
public class A extends java.lang.Object {
public int number;
public String toString() {
return new String("Value : " + number);
}
}
答案 0 :(得分:7)
在任何情况下,由于String
是不可变的,因此明确创建字符串副本没有任何意义,除非你真的需要一个来自Javadoc的关于constructor的副本:
初始化一个新创建的String对象,使其表示与参数相同的字符序列;换句话说,新创建的字符串是参数字符串的副本。除非需要显式的原始副本,否则不必使用此构造函数,因为字符串是不可变的。
表达式"Value : " + number
已经评估为新的String
,因此return new String("Value : " + number)
相当于
String tmp = "Value : " + number;
return new String(tmp);
你可以看到创建一个无用的副本。
答案 1 :(得分:1)
new String("Value:" + number)
是多余的。
您试图通过复制现有字符串来实例化新的 String 对象。很少需要以这种方式构造新的 String 对象,如果完成,可能会导致性能问题经常就够了。
这就足够了:
public class A extends java.lang.Object {
public int number;
public String toString() {
return "Value : " + number;
}
}