为什么JAVA中long后面要加L?float要加F ? | 您所在的位置:网站首页 › float后面为什么要加f › 为什么JAVA中long后面要加L?float要加F ? |
问题背景
今天在写代码时,将之前的一个变量进行了修改,运行单测的时候发现单测跑不过了,有点疑惑: 原代码简化下: count = 123; Long MAX_SIZE = 3 * 1024 * 1024 * 1024L; if (count > MAX_SIZE) { do error 逻辑 }修改后的代码: count = 123; long MAX_SIZE = 3 * 1024 * 1024 * 1024; if (count > MAX_SIZE) { do error 逻辑 }做此次修改主要是避免每次都拆装箱,结果修改后,if 条件变为了true,执行到了 异常流的处理逻辑。 原因java中的整型默认为int, 3 * 1024 * 1024 * 1024 超过了 int 的最大值(2 的 31 次方 - 1 = 2147483648 - 1 = 2147483647),导致溢出变为了 -1073741824,所以出现了上面的问题。 知识点java中的整型默认为int,int转为long是安全的,所以会自动转,能编译通过。 浮点数不加F默认是double类型,double转float可能损失精度,因为不会自动转,编译通不过。 转换的目的类型占得空间范围一定要大于转化的源类型 正向过程:由低字节向高字节自动转换 byte->short->int->long->float->double 逆向过程不会自动转,编译通不过,使用强制转换,可能丢失精度。 |
CopyRight 2018-2019 实验室设备网 版权所有 |