在 java 中为了比较 if 语句,我写了
if (x == 1)
并在代码审查中获得了使用 NumberUtils.INTEGER_ONE 而不是 1 的评论。我想知道它实际上为代码添加了什么好处。
在 java 中为了比较 if 语句,我写了
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)
ifx
是一个原语,它不是很有效,因为它会产生一个拆箱操作来转换NumberUtils.INTEGER_ONE
为一个1
int 原语。
Ifx
是一个对象,这不是一个好主意,因为Integer
对象应该与equals()
或进行比较intValue()
。