4
ความแตกต่างระหว่าง if (a - b <0) และ if (a <b)
ฉันอ่านArrayListซอร์สโค้ดของ Java และสังเกตเห็นการเปรียบเทียบบางอย่างในคำสั่ง if ใน Java 7 วิธีgrow(int)ใช้ if (newCapacity - minCapacity < 0) newCapacity = minCapacity; ใน Java 6 growไม่มีอยู่จริง ensureCapacity(int)อย่างไรก็ตามวิธีการใช้ if (newCapacity < minCapacity) newCapacity = minCapacity; อะไรคือเหตุผลที่อยู่เบื้องหลังการเปลี่ยนแปลง? มันเป็นปัญหาด้านประสิทธิภาพหรือเป็นสไตล์หรือไม่? ฉันสามารถจินตนาการได้ว่าการเปรียบเทียบกับศูนย์นั้นเร็วกว่า แต่ทำการลบอย่างสมบูรณ์เพื่อตรวจสอบว่ามันเป็นลบหรือเปล่า นอกจากนี้ในแง่ของ bytecode นี้จะเกี่ยวข้องกับสองคำสั่ง ( ISUBและIF_ICMPGE) แทนหนึ่ง ( IFGE)