Java常见疑难问题-数值表达式3
16. Math.abs结果一定为非负数吗?System.out.println(Math.abs(Integer.MIN_VALUE));// -2147483648上面的程序不会输出2147483648,而是-2147483648,为什么?
其实我们看一下Math.abs源码就知道为什么了,源码:(a < 0) ? -a : a;,结合上面那个迷题,我们就发现-Integer.MIN_VALUE= Integer.MIN_VALUE,所以上面的答案就是最小整数自己。
另外我们也可以从API文档看到对Math.abs()方法的解释:如果参数等于Integer.MIN_VALUE 的值(即能够 ...