我是个学 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";
如何使 CaseInsensitiveString表现得像 String,以便上面的语句是可以的(有和没有扩展 String) ?为什么 String 可以像这样传递字面值呢?据我所知,Java 中没有“复制建构子”这个概念?