我正在阅读Java的ArrayList源代码,并注意到if语句中的一些比较.
在Java 7中,该方法grow(int)使用
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
Run Code Online (Sandbox Code Playgroud)
在Java 6中,grow不存在.ensureCapacity(int)然而,该方法使用
if (newCapacity < minCapacity)
newCapacity = minCapacity;
Run Code Online (Sandbox Code Playgroud)
改变背后的原因是什么?这是性能问题还是风格?
我可以想象,与零进行比较会更快,但执行完全减法只是为了检查它是否为负似乎对我来说有点矫枉过正.同样在字节码方面,这将涉及两个指令(ISUB和IF_ICMPGE)而不是一个(IFGE).