为什么 Java 中没有 String.Empty?[已关闭]

2022-08-31 05:08:41

我知道每次我键入字符串文本时,字符串池中都会引用相同的String对象。""

但是为什么字符串 API 不包含 一个 ,所以我可以使用对 的引用 ?public static final String Empty = "";String.Empty

它至少可以节省编译时间,因为编译器将知道引用现有的字符串,而不必检查它是否已经创建以供重用,对吧?就我个人而言,我认为在许多情况下,字符串文本的激增,尤其是微小的文本,是一种“代码气味”。

那么,没有String.Empty背后是否有一个宏大的设计原因,或者语言创建者根本不同意我的观点?


答案 1

String.EMPTY为 12 个字符,并且是两个字符,它们都将在运行时引用内存中完全相同的实例。我不完全确定为什么会节省编译时间,事实上我认为会是后者。""String.EMPTY

特别是考虑到 s 是不可变的,这并不是说你可以先得到一个空的 String,然后对它执行一些操作 - 最好使用一个(或者如果你想是线程安全的)并将其转换为 String。StringStringBuilderStringBuffer

更新
从您的评论到问题:

实际上,启发这一点的TextBox.setText("");

我相信在适当的类中提供常量是完全合法的:

private static final String EMPTY_STRING = "";

然后像在代码中一样引用它

TextBox.setText(EMPTY_STRING);

通过这种方式,至少您可以明确地想要一个空的字符串,而不是忘记在IDE中填写字符串或类似的东西。


答案 2

org.apache.commons.lang.StringUtils.EMPTY