java基础-数值运算中的类型转换问题
来源:互联网 发布:sql group by count 编辑:程序博客网 时间:2024/06/05 22:44
1) 一个简单的运用,需要打印一个月的日志记录(日志每天每隔一个小时生成一条记录),简单实现时需要用到每小时的毫秒数,结果发现定义每小时的毫秒这个基数的类型不同,得到的结果也不同。这是一个很容易忽略的问题,int类型的长度是4字节,如果是大数乘法会导致结果溢出而得到莫名其妙的结果。
public static void main(String[] args) {int hour = 60*60*1000;System.out.println("use int:"+720*hour);System.out.println("use long:"+(long)720*60*60*1000);}
运行结果:
use int:-1702967296
use long:2592000000
2)封装数值类在运算过程中也存在类型转换
public static void main(String[] args) {//强制转成DoubleObject o1 = true?new Integer(1):new Double("2.0");System.out.println("Integer(1):"+o1);//OKObject o2 = true?null:new Double("2.0");System.out.println(o2);//因类型转而异常Integer i = null;Object o3 = true?i:new Double("2.0");System.out.println(o3);}
运行结果:
Integer(1):1.0
null
Exception in thread "main" java.lang.NullPointerException
at com.wood.model.Token.main(Token.java:43)
结论:java数值运算的自动类型转换是个容易忽略的问题。合法的基本数据类型的转换原则是指从取值范围窄的类型向取值范围宽的类型转换。在java中规定,对于二元运算符来说,如果一个操作数的类型是float、double或long,则另一个操作数被转换为float、double或long,否则两个操作数都被转换为int型。基本数据类型转换顺序:
char----->int----->long----->float----->double
byte----->short----->int----->long----->float----->double
- java基础-数值运算中的类型转换问题
- Java 中的数值类型转换
- Java 中的数值类型转换
- java基础之数值类型转换的问题
- Java三目运算符数值类型的自动转换
- java 数值类型转换
- Java 中的强制类型转换运算符
- Java 中的强制类型转换运算符
- java中的类型转换问题
- [Java 数值] 数值类型之间的转换
- Java 中的数值运算-BigDecimal
- js中的自动类型转换 字符串变量和数值执行算数运算
- 类型转换运算-java
- Java类型转换运算
- J2SE基础-java中的强制类型转换
- java 基础类型对应的Object在+-><运算符中的问题
- 黑马程序员-Java基础--类型转换、标识符、位运算符
- Java基础__(类型转换,运算符,选择结构)
- 数组中是否有两个数的和为10
- Tomcat迁移JBoss杂症
- minimumosversion set to less than 5.1.1 more information about 64-bit
- 学习笔记之Spring
- FPGA时序分析的一些理解
- java基础-数值运算中的类型转换问题
- js 是否是数组判断
- WebView 加载本地HTML CSS
- 给定多个枚举,动态输出枚举值
- 需要这样一个记录本-9 Delphi使用TADOQuery时提示:不正常地定义参数对象。提供了一不致或不完整的信息。
- linux tcp
- 【Android】Fragment真正意义上的onResume和onPause
- 优酷、搜狐、56、新浪视频转码
- JBAS011232: Only one JAX-RS Application Class allowed. com.sun.jersey