2012-03-10 41 views

回答

7

new String()是一个空字符串。这可能是一个方法的返回值,例如,如果你没有更有意思的返回值。使用文字""可能会更好,因为文字空字符串值已经被执行。

4

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

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

编辑:使用这个词相当于

选择不当。为了澄清以下所有的true

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

“等值”...但“相同”? 'new String()==“”'? – 2012-03-11 00:10:07

+0

@pst'new String()==“”'将会是false。他们不代表相同的对象,因为字符串对象不是来自实习生池。 – Jivings 2012-03-11 02:13:40

3

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

的唯一原因是,如果你想创建一个字符串,这是equal""但不等同于它。即使如此,它更可能是你打电话new String(str)其中str指的是一个空字符串。

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

+0

有趣的事实:.NET没有这种形式(no-arg字符串构造函数) – 2012-03-11 00:08:07

+0

@pst - 只有在您认为这是一个有趣的问题时才有意思。我的观点是,从实际的角度来看,无处不在的方法/构造函数的存在(或不存在)是无关紧要的。 – 2012-03-11 02:50:04

+0

@StephenC:我发现无用的方法或构造函数会分散注意力。当我看到一个新的API时,我希望它尽可能简单。无用的方法让我阅读更多的文档,我必须决定*不*使用它们。 – 2012-03-11 15:00:47

相关问题