java-int数据的溢出
数据的溢出:
当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,
这个整型变量所输出的值将发生紊乱,且不是预期的运行结果。
01 // 整数值如果超出了自己所可以表示范围的最大值,会出现溢出
02 public class TestJava3_4
03 {
04 public static void main(String args[])
05 {
06 int x = Java.lang.Integer.MAX_VALUE ; // 得到整型的最大值
int y=2147483647 ;//int类型的最大值
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
最新文章
- [bzoj3673][可持久化并查集 by zky] (rope(可持久化数组)+并查集=可持久化并查集)
- leetcode 111 minimum depth of binary tree
- 免费领取百度云盘2048G永久空间,永久离线下载特权
- javascript console 函数详解 js开发调试的利器
- js获取框架(IFrame)的内容
- BZOJ2243 (树链剖分+线段树)
- python webdriver测试报告
- dataguard 日志传输服务
- 基于curl 的zabbix API调用
- What’s the difference between an interface and an abstract class in Java?
- ECSHOP返回顶部的代码 纯CSS超简单
- document.body的一些用法以及js中的常见问题
- 苹果4S
- WebApi 得到提交过来的 post 数据
- eclipse maven引入第三方jar包后如何下载源代码(sources)
- Git合并一次commit到指定分支
- day2:day1作业 字符编码
- Centos7 开放80,3306端口解决办法
- 单点登录(SSO)解决方案之 CAS服务端数据源设置及页面改造
- eclipse下搭建shell脚本编辑器--安装开发shell的eclipse插件shelled