Ana*_*mar 4 java apache-commons-lang
在java中,在if语句中进行比较,我写道
if (x == 1)
并在代码审查中得到一个注释,使用NumberUtils.INTEGER_ONE而不是1.我想知道它实际添加到代码中有什么好处.
NumberUtils.INTEGER_ONE 可能来自公共场所.
在commons-lang,它被定义为:
public static final Integer INTEGER_ONE = new Integer(1);
Run Code Online (Sandbox Code Playgroud)
在commons-lang3,它被定义为:
public static final Integer INTEGER_ONE = Integer.valueOf(1);
Run Code Online (Sandbox Code Playgroud)
第一个版本不使用内部整数缓存(因为尚不存在),而第二个版本利用它.
现在,无论您使用哪个版本,对于您的问题并不重要,因为您比较整数值并且不分配或创建整数值(缓存可能更有意义的情况).
假设您以这种方式使用它:
if (x == NumberUtils.INTEGER_ONE)
Run Code Online (Sandbox Code Playgroud)
如果x是原语,则效率不高,因为它会产生转换NumberUtils.INTEGER_ONE为1int原语的拆箱操作.
如果x是一个对象,那么将Integer对象与equals()or 进行比较也不是一个好主意intValue().