Integer:
無窮大:Integer.MAX_VALUE; (最大值:2147483647)無窮小:Integer.MIN_VALUE;(最小值:-2147483648)Long:無窮大:Long.MAX_VALUE;(最大值:9223372036854775807)無窮小:Long.MIN_VALUE;(最小值:-9223372036854775808)Double:無窮大:Double.MAX_VALUE;無窮小:Double.MIN_VALUE;Float:無窮大:Float.MAX_VALUE;無窮小:Float.MIN_VALUE;
遇到一個理所當然但是又沒注意到的問題。
在JDK中,整形類型是有範圍的,最大值爲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
Math.abs(Integer.MIN_VALUE) = Integer.MIN_VALUE
Long,short,byte的結論是相同的。