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
java-int数据的溢出的更多相关文章
- java Int数据工具类
1.在使用tcp协议传输数据时,使用到的 Int 数据的工具类方法 //将 Int 数据转换成字节数组 public static byte[] intToByteArray(int data){ b ...
- java int整数相乘溢出
int整数相乘溢出 我们计算一天中的微秒数: * * * * ;// 正确结果应为:86400000000 System.out.println(microsPerDay);// 实际上为:50065 ...
- 如何写出让java虚拟机发生内存溢出异常OutOfMemoryError的代码
程序小白在写代码的过程中,经常会不经意间写出发生内存溢出异常的代码.很多时候这类异常如何产生的都傻傻弄不清楚,如果能故意写出让jvm发生内存溢出的代码,有时候看来也并非一件容易的事.最近通过学习< ...
- Java的内存--内存溢出vs内存泄露(2)
系统上线后,经常会出现内存不足等错误out of memory,很是头疼,决定要一探究竟 内存溢出 1. 定义及原因 内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使 ...
- 实战Java虚拟机之一“堆溢出处理”
从今天开始,我会发5个关于java虚拟机的小系列: 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实战Java虚拟机之四 ...
- java 线程数据同步
java 线程数据同步 由买票实例 //java线程实例 //线程数据同步 //卖票问题 //避免重复卖票 //线程 class xc1 implements Runnable{ //定义为静态,可以 ...
- 深入理解java虚拟机【内存溢出实例】
通过简单的小例子程序,演示java虚拟机各部分内存溢出情况: (1).java堆溢出: Java堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达,避免垃圾收集器回收 ...
- java将数据写入到txt文件中(txt有固定的格式)
java将数据写入到txt文件中,这个应该对于学过java I/O的人来说是很简单的事情了,但是如果要将数据以固定的格式写入到txt文件中,就需要一定的技巧了. 这里举个简单的例子,以供参考: 比如我 ...
- JAVA 大数据内存耗用测试
JAVA 大数据内存耗用测试import java.lang.management.ManagementFactory;import java.lang.management.MemoryMXBean ...
随机推荐
- python asyncio asyncio wait
import asyncio import time async def get_html(url): print("start get url") await asyncio.s ...
- vue里面路由传参的三种方式
1.方式一 通过query的方式也就是?的方式路径会显示传递的参数 HTML的方式<router-link :to="{name:xxx,query:{page:1,code:8899 ...
- Linbux下的Bash对拍
下面是\(Linux\)下的\(bash\)对拍程序: #!/bin/bash t=0 //数据组数 while true; do let "t=$t + 1" echox pri ...
- Winform中设置ZedGraph的曲线为散点图
场景 Winform中设置ZedGraph的曲线符号Symbol以及对应关系: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Oracle - 数字处理 - 取上取整、向下取整、保留N位小数、四舍五入、数字格式化
用oracle sql对数字进行操作: 取上取整.向下取整.保留N位小数.四舍五入.数字格式化 取整(向下取整): select floor(5.534) from dual; select trun ...
- Java生鲜电商平台-定时器,定时任务quartz的设计与架构
Java生鲜电商平台-定时器,定时任务quartz的设计与架构 说明:任何业务有时候需要系统在某个定点的时刻执行某些任务,比如:凌晨2点统计昨天的报表,早上6点抽取用户下单的佣金. 对于Java开源生 ...
- 设计模式之(十)装饰模式(DECORATOR)
在购买了一个房子后,如果是毛坯房,肯定不合适直接入住的.需要对它进行装修:地面找平贴地砖.批墙贴墙纸.吊顶装订以及买需要的家具,住进去以后也可能根据需要再添加或者去掉一些家具或者修改一些东西.所以的这 ...
- Python项目中使用配置文件
一些讨论 Python中使用配置文件的最佳实践 Python中使用配置文件的最好方法 Python符号常量 多种配置文件方案对比 我的建议 1. 排除yaml yaml 不是一个好主意, 因为需要给项 ...
- iOS开发之--iPhone X 适配:MJRefresh上拉加载适配
问题如下图: 出现原因,phoneX系列手机下方多了34像素的工作区域,所以需要对x全系列手机坐下适配, 解决如下: self.tableView.mj_footer.ignoredScrollVie ...
- block注意事项
1.block的声明和注意事项 #import "ZYViewController.h" @interface ZYViewController () @end /*用typede ...