为什么JAVA中long后面要加L?float要加F ? 您所在的位置:网站首页 float后面为什么要加f 为什么JAVA中long后面要加L?float要加F ?

为什么JAVA中long后面要加L?float要加F ?

2023-11-03 09:35| 来源: 网络整理| 查看: 265

问题背景

今天在写代码时,将之前的一个变量进行了修改,运行单测的时候发现单测跑不过了,有点疑惑:

原代码简化下:

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 实验室设备网 版权所有