...
Integer type ranges are defined by the Java Language Specification, Section 4.2.1, "Integral Types and Values," and are also described in INT00NUM00-J. Ensure that integer operations do not result in overflow.
...
[Harold 1999]
[JLS 2005] Section 5.1.3, "Narrowing Primitive Conversions"
...
INT00NUM00-J. Ensure that integer operations do not result in overflow 03. Integers (INT) INT02-J. Do not assume that the remainder operator always returns a non-negative result