在java中进行if语句的比较,我写了
if (x == 1)
并在代码审查中得到一条评论,使用NumberUtils.INTEGER_ONE而不是1.我想知道它实际上为代码添加了什么好处。
答案 0 :(得分:6)
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);
第一个版本没有使用内部整数缓存(因为还没有存在)
而第二个版本利用它。
现在,无论您使用何种版本,在比较整数值并且您不分配或创建整数<时,对您的问题并不重要/ em> value(缓存可能更有意义的情况)。
假设您正在以这种方式使用它:
if (x == NumberUtils.INTEGER_ONE)
如果x
是基元,则效率不高,因为它会产生一个拆箱操作,以将NumberUtils.INTEGER_ONE
转换为1
int基元。
如果x
是对象,则不应将Integer
个对象与equals()
或intValue()
进行比较,这不是一个好主意。