'的用途是什么;新';Java中字符串的运算符?

'的用途是什么;新';Java中字符串的运算符?,java,return,return-value,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); } }

关于在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);

    }
}
新字符串(“值:+number)
是多余的。
您试图通过复制现有字符串来实例化一个新的字符串对象。以这种方式构造新的字符串对象很少是必要的,如果这样做足够频繁,可能会导致性能问题。 这就足够了:

public class A extends java.lang.Object {

    public int number;

    public String toString() {
        return "Value : " + number;
    }

}

在任何情况下,由于
String
都是不可变的,因此显式创建字符串的副本没有任何意义,除非您确实需要来自Javadoc的关于以下内容的副本:

初始化新创建的字符串对象,使其表示与参数相同的字符序列;换句话说,新创建的字符串是参数字符串的副本。除非需要原始的显式副本,否则不需要使用此构造函数,因为字符串是不可变的。

表达式
“Value:”+number
已作为新的
字符串计算,因此
返回新字符串(“Value:”+number)
相当于

String tmp = "Value : " + number;
return new String(tmp);
您可以看到它创建了一个无用的副本。

和的可能副本