【问题标题】:In Java, is String s = new String() any use at all?在 Java 中,String s = new String() 有什么用处吗?
【发布时间】:2012-03-27 21:53:42
【问题描述】:

既然字符串在 Java 中是不可变的,我为什么要使用无参数的 String 构造函数并创建一个对象?

变量s 对我有什么用处:

String s = new String();

【问题讨论】:

    标签: java string constructor arguments


    【解决方案1】:

    new String() 是一个空字符串。这可能是方法的返回值,例如,如果您没有更有趣的返回值。使用文字 "" 可能会更好,因为文字空字符串值已经被实习了。

    【讨论】:

      【解决方案2】:

      它是一个空字符串,相当于""。来自 javadoc:

      初始化一个新创建的 String 对象,使其代表一个空字符序列。请注意,由于字符串是不可变的,因此不需要使用此构造函数。

      编辑:

      等效这个词的使用选择不当。澄清以下所有内容是true

      "" == ""
      "" != new String()
      "".equals(new String())
      

      【讨论】:

      • “等价”...但“相同”? new String() == ""?
      • @pst new String() == "" 将是错误的。它们不代表相同的对象,因为字符串对象不是来自实习池。
      【解决方案3】:

      既然字符串在 Java 中是不可变的,为什么我要使用参数少的 String 构造函数并创建一个对象?

      唯一的原因是如果您想要创建一个字符串,它是equal"",但不完全相同。即使这样,您也更有可能调用new String(str),其中str 指的是一个空字符串。

      提供构造函数的真正原因并不完全清楚。但是它并没有什么坏处,而且可能有一些理由在一开始就有它(在 Java 被称为 Java 之前)。

      【讨论】:

      • 有趣的事实:.NET 没有这种形式(无参数字符串构造函数)
      • @pst - 仅当您认为这是一个有趣的问题时才有趣。我的观点是,从实际角度来看,是否存在(或不存在)大部分无用的方法/构造函数是无关紧要的。
      • @StephenC:我发现无用的方法或构造函数会分散注意力。当我看到一个新的 API 时,我希望它尽可能简单。无用的方法让我阅读更多文档,我必须决定使用它们。
      猜你喜欢
      • 2014-05-01
      • 2010-09-24
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多