为什么int变量值在Integer.MIN_VALUE处设置为Integer.MAX_VALUE并且递减

时间:2013-09-19 12:11:15

标签: java integer operators

在经过this问题后,我脑子里互相抱怨。 问题:为什么整数变量值设置为Integer.MAX_VALUE

例如

int x = Integer.MIN_VALUE;
x--;
if (x == Integer.MAX_VALUE) {
    System.out.println("Why....");
}

必须有一些原因可以明确地实现此行为,否则抛出Exception会更好。我无法在JLS中找到/找到此行为。

2 个答案:

答案 0 :(得分:3)

由于下溢。计算机已经这样工作多年了,抛出一个例外将是一个可怕的想法。

答案 1 :(得分:1)

http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.2

“整数运算符不以任何方式表示溢出或下溢。”