数据溢出:
当整数的大小超过了可以表示的范围,而程序中又没有做数值的范围检查时,这个整形变量所输出的值不是预期得到的。
看如下的测试程序:
public class Test {
public static void main(String args[]) {
int x = java.lang.Integer.MAX_VALUE; // 得到整型的最大值
//int y = 2147483647;// int类型的最大值
System.out.println("x = " + x);
System.out.println("x+1 = " + (x + 1));
System.out.println("x+2 = " + (x + 2));
}
}
最大值加1时,反而变成范围的最小值,加2变成范围的次小值,这种情况可以想象出一个循环。为了避免这种情况发生,可以在表达式的任一变量后加上大写的L,或将变量声明成更高精度的类型,例如long。