使用NumberUtils.INTEGER_ONE和其他此类实用程序的好处

时间:2017-07-14 06:42:11

标签: java apache-commons-lang

在java中进行if语句的比较,我写了

if (x == 1)

并在代码审查中得到一条评论,使用NumberUtils.INTEGER_ONE而不是1.我想知道它实际上为代码添加了什么好处。

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基元。

    < / LI>
  • 如果x是对象,则不应将Integer个对象与equals()intValue()进行比较,这不是一个好主意。