Java Strings: “String s = new String(”silly“);”
我是一个学习Java C++的人。我正在阅读有效的Java,有些东西让我感到困惑。它说永远不要写这样的代码:
String s = new String("silly");
因为它会创建不必要的对象。但相反,它应该这样写:String
String s = "No longer silly";
好吧,到目前为止...但是,给定此类:
public final class CaseInsensitiveString {
private String s;
public CaseInsensitiveString(String s) {
if (s == null) {
throw new NullPointerException();
}
this.s = s;
}
:
:
}
CaseInsensitiveString cis = new CaseInsensitiveString("Polish");
String s = "polish";
-
为什么第一个语句是可以的?不应该是
CaseInsensitiveString cis = "Polish";
我如何使行为像上面的陈述是可以的(有和没有扩展)?关于String,是什么让它能够像那样传递一个字面意思呢?根据我的理解,Java中没有“复制构造函数”的概念?
CaseInsensitiveString
String
String