【问题标题】:What is the use of the 'new' operator for String in Java?Java中String的'new'运算符有什么用?
【发布时间】:2015-04-19 00:11:44
【问题描述】:

我有一个关于在 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 return return-value


【解决方案1】:

在任何情况下,由于String 是不可变的,除非您确实需要来自Javadoc 的关于constructor 的副本,否则没有任何目的显式创建字符串的副本:

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

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

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

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

【讨论】:

    【解决方案2】:

    new String("Value:" + number) 是多余的。
    您尝试通过复制现有字符串来实例化新的 String 对象。以这种方式构造新的 String 对象很少需要,如果经常这样做可能会导致性能问题足够的。 这就够了:

    public class A extends java.lang.Object {
    
        public int number;
    
        public String toString() {
            return "Value : " + number;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      相关资源
      最近更新 更多