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