在JDK中,整型類型是有范圍的 -2147483648~2147483647 ( -2^31 --- 2^31-1)
最大值為Integer.MAX_VALUE,即2147483647,最小值為Integer.MIN_VALUE -2147483648。
對整形最大值加1,2147483648(越界了),那么此時值為多少呢?結果是-2147483648,即是Integer.MIN_VALUE。
類似的,對Integer.MIN_VALUE取反或者取絕對值呢?仍為Integer.MIN_VALUE,因為值為-2147483648,絕對值2147483648超過Integer.MAX_VALUE 2147483647。
所以就有以下結果
Integer.MAX_VALUE + 1 = Integer.MIN_VALUE
//返回 Integer 值的絕對值。
Math.abs(Integer.MIN_VALUE) = Integer.MIN_VALUE
Long,short,byte的結論是相同的。
這個語句的輸出結果:
System.out.println(1<<31== Integer.MIN_VALUE);//true