博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习笔记(二)--数据的溢出
阅读量:7194 次
发布时间:2019-06-29

本文共 1146 字,大约阅读时间需要 3 分钟。

数据的溢出:

当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,

这个整型变量所输出的值将发生紊乱,且不是预期的运行结果。

01 //  整数值如果超出了自己所可以表示范围的最大值,会出现溢出

02 public class TestJava3_4
03 {
04  public static void main(String args[])
05  {
06    int x = java.lang.Integer.MAX_VALUE ;  //  得到整型的最大值
07   
08  System.out.println("x = "+x);

09   System.out.println("x+1 = "+(x+1));

10   System.out.println("x+2 = "+(x+2));
11  }
12 }

输出结果:

x = 2147483647
x+1 = -2147483648
x+2 = -2147483647 
     当最大值加上 1 时,结果反而变成表示范围中最小的值;当最大值加上 2 时,结
果变成表示范围中次小的值,这就是数据类型的溢出。读者可以发现,这个情形会出
现一个循环,若是想避免这种情况的发生,在程序中就必须加上数值范围的检查功能,
或者使用较大的表示范围的数据类型,如长整型。

    就像计数器的内容到最大值时会自动归零一样。而在整数中最小值为

-2147483648,所以当整数 x 的值最大时,加上 1 就会变成最小值-2147483648,也就
是产生了溢出。

        为了避免 int 类型的溢出,可以在该表达式中的任一常量后加上大写的“L”,或

是在变量前面加上 long,作为强制类型的转换。

范例:TestJava3_5.java

01 //  下面的这段程序当整型发生溢出之后,用强制类型进行转换
02 public class TestJava3_5
03 {
04  public static void main(String args[])
05  {
06   int x = java.lang.Integer.MAX_VALUE ;
06   
08   System.out.println("x = "+x);
09   System.out.println("x + 1 = "+(x+1));
10   System.out.println("x + 2 = "+(x+2L));
11   System.out.println("x + 3 = "+((long)x+3));
12  }
13 }
 
输出结果:
x = 2147483647
x + 1 = -2147483648
x + 2 = 2147483649
x + 3 = 2147483650

 

转载地址:http://iqvkm.baihongyu.com/

你可能感兴趣的文章
Java之谜 —— 来自Neal Gafter的演讲
查看>>
Event Managers
查看>>
兼职开发悟出的点点滴滴
查看>>
总结一些知识点(附链接) 四
查看>>
笔试题①
查看>>
js 对象
查看>>
安装apache
查看>>
正则表达式--列表
查看>>
java基础---面向对象
查看>>
oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
查看>>
textview第一次出现不可滚动文本,但是点击出现键盘,键盘落下,就可以滚动问题...
查看>>
Android小感悟-重写textview组件感悟
查看>>
bnu Game 博弈。
查看>>
【转】IntelliJ IDEA2016.1 + maven 创建java web 项目
查看>>
微软宣布支持基于虚拟机的Azure IOT Edge服务
查看>>
以流动债务为例论指标的合理使用
查看>>
保Cloudera弃Hortonworks,新平台将支持五大云供应商
查看>>
一文教会你数据库性能调优(附某大型医院真实案例)
查看>>
Android - 关于设备版本号
查看>>
听说你Binder机制学的不错,来面试下这几个问题(一)
查看>>