Java is doing that to you on purpose. Java converts the types of the operands in arithmatic expressions. For example, if you add a long and an int, the result is a long because Java makes sure that both operands are promoted to long before doing the math.
Operands of type short or byte are both automatically converted to int before performing the operation. That is why your result is an int. You could solve this problem by casting your result before setting the variable. For example:
<PRE>
short a = 1;
short b = (short)(a + 1);
</PRE>
Hope this helps.
Nick