新的'有什么用? Java中String的运算符?

时间:2015-02-18 04:35:00

标签: java return return-value

我有一个关于在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);

    }
}

2 个答案:

答案 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;
    }

}