首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java解惑您知多少(二)

2014-01-09 
java解惑你知多少(二)//?-2147483648??上面的程序不会输出2147483648,而是-2147483648,为什么??其实我们看

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也是这样的。

热点排行