Java really prefers that you do arithmetic operations with ints. (It will be interesting to see what happens as more and more 64 bit native machines appear.)
Casting the result to a short can lead to unexpected results if the actual result would be to big to fit in a short. What will happen is that the result will "wrap around" in binary, probably ending up negative. Similarly, a negative result with too large a magnitude to fit in a short will wrap around to something positive.
Of course, that's a risk with ints, too. Sometimes when the application calls for it, I
test for that possibility ahead of time and maybe throw an error, but usually I just try to use a numeric type big enough to hold all forseeable results.