Java数据的溢出
如果整数的数据大小超过可以表示的范围,而且没有做数值范围的检查,整型变量所输出的值就会发生紊乱。如下面的例子:
public class part3 {
public static void main(String[] args) {
int max = Integer.MAX_VALUE;//得到整数的最大值
System.out.println("整数的最大值:"+max);
System.out.println("整数的最大值+1:"+(max+1));
System.out.println("整数的最大值+2:"+(max+2));
}
}
得到结果如下:
为什么会导致这种情况,这是因为溢出的会进行一个循环,如下图所示:
如果要避免这种情况的发生,有两种办法:
(1)加上数值范围的检查功能
(2)使用较大的表示范围的数据类型
使用强制类型转换例子如下所示:
public class part3 {
public static void main(String[] args) {
int max = Integer.MAX_VALUE;//得到整数的最大值
System.out.println("整数的最大值:"+max);
System.out.println("整数的最大值+1:"+(max+1));
System.out.println("整数的最大值+2:"+(max+2));
System.out.println("整数的最大值+1:"+((long)max+1));
}
}
得到结果如下:
但是面对long类型的溢出,就无法解决了,这时候就需要加入边界检查。