Java是空的还是“空的”&引用;。性能相等

Java是空的还是“空的”&引用;。性能相等,java,performance,Java,Performance,我在Adobe CQ中编写了很多组件,因此必须处理很多用户集属性。在我能做一个isEmpty检查之前,我有点厌倦了所有的空检查 我想做一些类似的事情 "".equals(string); 这将更具可读性,但在性能方面如何比较呢。是的,如果存在多个检查,我希望将“”创建为常量 谢谢 D您不应该关心这里的性能。这两个版本的速度相似。即使编译方式不同,JITted代码的差异也不可能超过几个CPU周期(特别是考虑到String.equals是JVM固有的事实)。这不是在Java上编程时应该担心的问题。

我在Adobe CQ中编写了很多组件,因此必须处理很多用户集属性。在我能做一个isEmpty检查之前,我有点厌倦了所有的空检查

我想做一些类似的事情

"".equals(string);
这将更具可读性,但在性能方面如何比较呢。是的,如果存在多个检查,我希望将“”创建为常量

谢谢
D

您不应该关心这里的性能。这两个版本的速度相似。即使编译方式不同,JITted代码的差异也不可能超过几个CPU周期(特别是考虑到
String.equals
是JVM固有的事实)。这不是在Java上编程时应该担心的问题。

最好使用
isEmpty()
方法(更简单、更快的源代码)。 在java中检查空字符串的另一种有效方法是使用:

string.length() == 0;
我个人使用,例如:


此外,除非你已经将其确定为一个问题,否则我真的不会担心它的性能。请在你的答案中添加为什么首选第一种方法。即使它有一些小的性能改进,最终用户会注意到吗?是的,添加第三方库来调用单个方法,这真是一场大胜利。而且
StringUtils.isEmpty(someString)
看起来比
someString.isEmpty()
好多了……我从来没有在一个没有广泛使用apache.commons.lang3的项目上工作过;课程中有很多有用的东西。如果您在找到与现有JRE方法相同的方法后立即添加该库,那么没有它的项目就不会有。不要忘记有用的常量:
StringUtils.EMPTY
;不再需要一直键入
StringUtils.isEmpty实际上是一个
null
或空检查。因此从表面上看,
someString.isEmpty()
可以工作,直到有可能
someString==null
我认为String.equals是最容易阅读的,这对我来说是最大的胜利。如果性能大致相同,我会在代码评审中提出我的观点。谢谢你的意见。
if (StringUtils.isEmpty(someString)) {
    ...
if (StringUtils.isNotEmpty(someString)) {
    ...