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

lov*_*ool 2 java return return-value

关于new在java语句中使用,我有一个非常基本的问题.例如,最后的return子句new用于String.为什么String需要在这里创建?在什么样的情况下人们会选择使用new

public class A extends java.lang.Object {

    public int number;

    public String toString() {

        return new String("Value : " + number);

    }
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 7

在任何情况下,因为String是不可变的,所以没有明确创建字符串副本的目的,除非你真的需要一个来自Javadoc的关于构造函数的副本:

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

表达式"Value : " + number已经计算作为一种新的String所以return new String("Value : " + number)相当于

String tmp = "Value : " + number;
return new String(tmp);
Run Code Online (Sandbox Code Playgroud)

你可以看到创建一个无用的副本.