作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在 java 中,为了在 if 语句中进行比较,我写了
如果(x == 1)
并在代码审查中收到了使用 NumberUtils.INTEGER_ONE 而不是 1 的评论。我想知道它实际上会给代码带来什么好处。
最佳答案
NumberUtils.INTEGER_ONE
可能来自 commons-lang。
在commons-lang
中,它被定义为:
public static final Integer INTEGER_ONE = new Integer(1);
在commons-lang3
中,它被定义为:
public static final Integer INTEGER_ONE = Integer.valueOf(1);
第一个版本不使用内部整数缓存(因为当时还不存在)而第二个版本利用了它。
现在,无论您使用的是什么版本,您比较整数 值并且您不分配或创建整数 值对您的问题来说并不重要(缓存可能更有意义的情况)。
假设您以这种方式使用它:
if (x == NumberUtils.INTEGER_ONE)
如果 x
是原语,它不是很有效,因为它会产生一个拆箱操作将 NumberUtils.INTEGER_ONE
转换为 1
int 原语。
如果 x
是一个对象,这也不是一个好主意,因为 Integer
对象应该与 equals()
进行比较或 intValue()
。
关于java - 使用 NumberUtils.INTEGER_ONE 和其他此类实用程序的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45096345/
在 java 中,为了在 if 语句中进行比较,我写了 如果(x == 1) 并在代码审查中收到了使用 NumberUtils.INTEGER_ONE 而不是 1 的评论。我想知道它实际上会给代码带来
我是一名优秀的程序员,十分优秀!