title: Why does the JVM have the iconst_2 - iconst_5 opcodes?
body: <p>While reading the JVM specification (as one does), I was very surprised when I came across the 7 <code>iconst_&lt;i&gt;</code> opcodes. After all, there is only one byte to play with.</p>
  
  <p>I very rarely write the literals for 2, 3, 4 or 5 in my code. I can understand why -1, 0 and 1 might be treated specially, but it seems amazing to me that the designers would want to blow 4 precious opcodes on numbers that just happen to be quite small.</p>
  
  <p>Does anyone know if there's a good reason for this? Am I underestimating the benefit of these?</p>