java - 为什么 Java 中没有 String.Empty?

标签 java string

我理解每次输入字符串字面量"",都会在字符串池中引用同一个String对象。

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

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

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

最佳答案

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

特别是考虑到 String 是不可变的,它不像您可以先获取一个空字符串,然后对其执行一些操作 - 最好使用 StringBuilder(或 StringBuffer 如果你想成为线程安全的)并将其转换为字符串。

更新
从您对问题的评论:

What inspired this is actually TextBox.setText("");

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

private static final String EMPTY_STRING = "";

然后在你的代码中引用它

TextBox.setText(EMPTY_STRING);

这样至少你明确表示你想要一个空字符串,而不是你忘记在你的IDE或类似的东西中填写字符串。

关于java - 为什么 Java 中没有 String.Empty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3450604/

相关文章:

java - 帧动画未运行

javascript - 使用 javascript 进行简单语法高亮显示

python - 连接对象列表中的字符串

python - 去掉 Python 字符串中最后一个破折号后的所有字符,并测试是否为数字?

java - 如何将 String[] 转换为 ArrayList<String>

c - 尝试用空格和引号标记字符串

java - Netbeans 显示错误,但代码运行

java - Eclipse 远程调试不适用于伪分布式模式下的 hadoop

java - 开发可以将外部构建器添加到项目的 Eclipse 插件

java - 检查连接速度的库