different compiler behavior when adding bytes
<pre><code>byte b1 = 3;
byte b2 = 0;

b2 = (byte) (b2 + b1);  // line 3
System.out.println(b2);

b2 = 0;
b2 += b1;               // line 6
System.out.println(b2);
</code></pre>

<p>On line 3, it's a compiler error if we don't typecast the result to a byte -- that may be because the result of addition is always int and int does not fit into a byte. But apparently we don't have to typecast on line 6. Aren't both statements, line 3 and line 6, equivalent? If not then what else is different?</p>
