【发布时间】:2012-03-27 21:53:42
【问题描述】:
既然字符串在 Java 中是不可变的,我为什么要使用无参数的 String 构造函数并创建一个对象?
变量s 对我有什么用处:
String s = new String();
【问题讨论】:
标签: java string constructor arguments
既然字符串在 Java 中是不可变的,我为什么要使用无参数的 String 构造函数并创建一个对象?
变量s 对我有什么用处:
String s = new String();
【问题讨论】:
标签: java string constructor arguments
new String() 是一个空字符串。这可能是方法的返回值,例如,如果您没有更有趣的返回值。使用文字 "" 可能会更好,因为文字空字符串值已经被实习了。
【讨论】:
它是一个空字符串,相当于""。来自 javadoc:
初始化一个新创建的 String 对象,使其代表一个空字符序列。请注意,由于字符串是不可变的,因此不需要使用此构造函数。
编辑:
等效这个词的使用选择不当。澄清以下所有内容是true:
"" == ""
"" != new String()
"".equals(new String())
【讨论】:
new String() == ""?
new String() == "" 将是错误的。它们不代表相同的对象,因为字符串对象不是来自实习池。
既然字符串在 Java 中是不可变的,为什么我要使用参数少的 String 构造函数并创建一个对象?
唯一的原因是如果您想要创建一个字符串,它是equal 到"",但不完全相同。即使这样,您也更有可能调用new String(str),其中str 指的是一个空字符串。
提供构造函数的真正原因并不完全清楚。但是它并没有什么坏处,而且可能有一些理由在一开始就有它(在 Java 被称为 Java 之前)。
【讨论】: