我理解每次输入字符串字面量""
,都会在字符串池中引用同一个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/