Java 基础知识(整型数据类型)
2017-12-20 19:34
302 查看
int 数据类型溢出问题
public class Test{ public static void main(String args[]){ int maxValue = Integer.MAX_VALUE; //获取最大值 int minValue = Integer.MIN_VALUE; //获取最小值 int maxTest = maxValue+1;//测试最大值加1 int minTest = minValue-1;//测试最小值减1 int maxTest2 = maxValue+2;//测试最大值加2 System.out.println(maxTest); System.out.println(minTest); System.out.println(maxTest2); } }
输出的结果是
-2147483648
2147483647
-2147483647
由此可见,当int数据类型溢出时最大值加1会变成最小值,最小值减1会变成最大值。具体原因通过汇编很好理解。
解决方法
将int类型转化为long类型
如果直接执行以下语句会输出什么?long result = maxValue+1; System.out.println(result);
结果是:-2147483648,虽然我们已经将result转化为long类型,但是java语言是先执行“=”后的内容,也就是先执行 ”maxValue+1“。此时maxValue仍属于int类型,则还是会出现溢出。
正确的实现方式是
long result = (long)maxValue+1; System.out.println(result);
先将int类型变量转化为long型,或者将int类型变量先赋值给long型,再进行加减运算。
java中范围小的数据类型可以自动转化为范围大的数据类型,但是范围大的数据类型只有通过强制转化才能变成范围小的数据类型!
ps:java浮点型的数据运算存在个历史bug,以下的代码会输出的结果是什么?
System.out.println(1.1*1.1);
正常理解是会输出1.21,但是编译运行以后得到的结果是:1.2100000000000002
相关文章推荐
- 【Unity基础知识④】数据类型,内存大小,数据的范围以及整型
- Java基础知识强化22:Java中数据类型转换
- java学习02-java基础知识、基本数据类型、运算符
- Java基础知识学习二(数据类型及运算)
- JAVA第二章基础知识:注释,标识符,数据类型常量变量,基本数据类型转换。--------------(Make A little EvProgresseryday )
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- 黑马程序员--Java学习日记之基础知识(数据类型和运算符)
- Java基础入门-关键字、数据类型相关知识
- 黑马程序员——java基础知识篇——>标识符、关键字、常量、进制表示、数据类型、运算符等
- Java基础语法知识之数据类型
- 【JAVA基础知识总结】JAVA数据类型基础
- java基础知识(一)数据类型默认值
- Java编程基础知识复习:变量与数据类型<数据类型初阶>
- Java基础知识强化之IO流笔记57:数据输入输出流(操作基本数据类型)
- 【Java学习笔记】基础知识学习1【基本输出,数据类型,基础运算符号】
- 黑马程序员——java基础知识之String类和基础数据类型对象包装类
- 01-Java基础知识:数据类型与变量、标识符、运算符、表达式
- 黑马程序员-Java基础知识预备之Java数据类型和运算符
- Java基础知识(数据类型、标识符、变量、运算符和流程控制语句)
- Java基础知识(数据类型、标识符、变量、运算符和流程控制语句)