gpt4 book ai didi

Java 字符串 : "String s = new String("silly");"

转载 作者:IT老高 更新时间:2023-10-28 11:38:47 28 4
gpt4 key购买 nike

我是一名学习 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";
  1. 为什么第一个语句没问题?不应该吗

    CaseInsensitiveString cis = "波兰语";

  2. 我如何使 CaseInsensitiveString 表现得像 String 这样上面的语句是可以的(有和没有扩展 String)?是什么让 String 能够像这样传递文字是可以的?据我了解,Java 中没有“复制构造函数”的概念?

最佳答案

String 是语言的一个特殊的内置类。它适用于 Stringonly,您应该避免在其中说

String s = new String("Polish");

因为文字 "Polish" 已经是 String 类型,并且您正在创建一个额外的不必要的对象。对于任何其他类,说

CaseInsensitiveString cis = new CaseInsensitiveString("Polish");

是正确的(在这种情况下也是唯一的)要做的事情。

关于Java 字符串 : "String s = new String("silly");",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/334518/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com