【发布时间】:2012-06-05 11:31:54
【问题描述】:
可能重复:
What is the purpose of the expression “new String(…)” in Java?
我知道应该避免使用String s = new String("Hello World"),因为它会为“Hello World”创造额外的空间,这在大多数情况下是不必要的。
解释为什么应该避免String s = new String("Hello World")的相关问题在这里:
What is the difference between "text" and new String("text")?
但是我们什么时候需要使用String s = new String("Hello World"),而不是String s = "Hello World"?这是我遇到的一个面试题。
如果在大多数情况下应该避免使用String s = new String("Hello World"),为什么 Java 仍然允许这样做?
【问题讨论】:
-
同样的问题适用于
new Boolean(true),而您可以使用Boolean.TRUE。 -
有很多琐碎的代码,您不会期望 Java 会阻止您编写。
int a = 5 + 1 - 1;很傻,但合法。 -
@Damien_The_Unbeliever:那个特定的例子由编译器处理(而
new String("s");)不是。 -
@Thilo - 这可以说是赞成允许这样的构造(与希望Java禁止完全合法的表达的OP立场相反)。