We need to analyze the binary content of the result:
Integer.MAX_VALUE * 1 = 0x7fffffff, which is decimal 2147483647
Integer.MAX_VALUE * 2 = 0xfffffffe, which is -2
Integer.MAX_VALUE * 3 = 0x17ffffffd, but it is 33 bits, after truncation it is 0x7ffffffd, which is 2147483645
etc.