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