读书人

java解惑您知多少(二)

发布时间: 2014-01-09 23:07:34 作者: rapoo

java解惑你知多少(二)
//?-2147483648??

上面的程序不会输出2147483648,而是-2147483648,为什么?

?

其实我们看一下Math.abs源码就知道为什么了,源码:(a < 0) ? -a : a;,结合上面那个迷题,我们就发现-Integer.MIN_VALUE= Integer.MIN_VALUE,所以上面的答案就是最小整数自己。

?

另外我们也可以从API文档看到对Math.abs()方法的解释:如果参数等于 Integer.MIN_VALUE 的值(即能够表示的最

小负 int 值),则结果与该值相同且为负。

?

所以Math.abs不能保证一定会返回非负结果。

?

当然,Long.MIN_VALUE也是这样的。

读书人网 >编程

热点推荐