Hi
binary numeric promotion implicitly appropriate widening primitive conversion so that a pair of operands have the broadest numeric type of two,but which is always at least int.
byte,short,char always converted to at least int.
here both of them are variable so they can be changed.so multiplication of them can be an integer which may be not in rang of byte so compiler give error with msg
ossible loss of precision.so explisit casting requird where definatly loss of precision.
if you make them final then value of them are constant so it can't be changed and here multiplication is within the range of byte so then it work properly because no precision loss.
Amit Madan