I can create a literal long by appending an L to the value; why can\'t I create a literal short or byte in some similar way? Why do I need to use an int literal with a cast?
Another reason might be that the JVM doesn't know about short and byte. All calculations and storing is done with ints, longs, floats and doubles inside the JVM.