为什么在Java中没有为空字符串设置访问API呢?
=========================
- 熟悉Java的朋友都知道,当我们通过双引号创建字符串的时候,Java 会将字符串存储在常量池中以供我们下次使用
- 但是为什么String类不为我们提供一个对空字符串的引用呢
- 因为这样做至少可以节省了编译的时间,因为我们引用API的话编译器就知道我们引用现有的常量而不会再去对他做检查是否已经存在常量池等操作。我个人认为这某种意义上来说这有点“代码味道”
- 所以说,关于String的空字符一说在Java中中是否有更加复杂的涉及考虑还说设计者没有考虑到这个问题呢
回答1
===
- String.EMPTY是12个字符,而""仅仅2个字符,它们在运行时都将引用内存中完全相同的实例。我不太确定为什么是String.EMPTY可以节省编译时间,实际上我认为应该是后者
- 考虑到String被final修饰是不可变得。他并不是你想的哪样可以现获取到空字符串然后通过类似StringBuilder或者StringBuffer来操作他然后再获取到String
- 补充说明一下,我觉得在适当的类中提供常量以供使用是完全可取的。
private static final String EMPTY_STRING = "";
- 然后再其他地方引用这个变量
TextBox.setText(EMPTY_STRING);
- 通过使用变量至少能够说明在这个地方你是想使用空字符的。而不会给人造成你是忘记填充内容了
回答2
===
- 我也非常赞成上面的回答。因为使用String.EMPTY表达更加的明确。他不容使用产生误解。
- 不过使用引用还是使用双引号这只是个人使用风格的问题。使用引用可以避免后期不必要的争论
个人总结
- 关于String通过双引号构建的确方便。但是的确容易引起别人误解。一个
""
到底是真的就是空内容呢?还是开发者忘记写上内容了呢。 - 所以建议自己在全局类上建立一个空的String。 其他地方引用。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!