java中用float时,数字后面加f,这样是为什么你知道吗


Posted in Java/Android onSeptember 04, 2021

Java float 与 double 的区别

1、float是单精度浮点数

内存分配4个字节,占32位,有效小数位6-7位

double是双精度浮点数,内存分配8个字节,占64位,有效小数位15位

2、java中默认声明的小数是double类型的

如double d=4.0

如果声明: float x = 4.0则会报错,需要如下写法:float x = 4.0f或者float x = (float)4.0

其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义

3、对编程人员来而

double 和 float 的区别是double精度高,但double消耗内存是float的两倍,且double的运算速度较float稍慢。

Java float、double、long类型变量赋值添加f、d、L尾缀问题

1、添加尾缀说明 

我们知道Java在变量赋值的时候,其中float、double、long数据类型变量,需要在赋值直接量后面分别添加f或F、d或D、l或L尾缀来说明。

其中,long类型最好以大写L来添加尾缀,因为小写l容易和数字1混淆。

例如:

long lNum  = 1234L;
float fNum = 1.23f;
double dNum = 1.23d;

这是Java语法规定,不添加尾缀很容易引起编译器报错,并且程序可读性也会变差。

2、不添加尾缀也不会报错的情况  

Java语言中,整数直接量(例如:1、2、10等),JVM虚拟机是默认为int类型数据的。所以,当整数直接量赋给long、float或者double,而不添加尾缀,虚拟机也会直接将int类型数据自动转换为对应类型然后赋值。因为数据长度短的转换为长的并不会造成数据丢失,所以默认可以自动转换。   

例如:

long  lNum  = 5;   //不报错,因为int自动转换为long类型,不会报错
float fNum  = 7;   //不报错,因为int自动转换为float类型,不会报错
double dNum = 10;  //同上

  

但是,当浮点直接量(例如:1.2等),JVM虚拟机默认为double类型,如果直接赋值给float就会引起编译器报错。

float fNum  = 1.2; //报错,因为1.2虚拟机是默认为double类型,不能直接赋值给float类型变量
float fNew  = 1.3f;//正确,因为尾缀添加了f,即告诉了虚拟机1.3属于float类型变量

3、总结  

所以,当Java中遇到这三种类型变量需要赋直接量时候,最好都添加上相应的尾缀。这样不仅会防止编译器报错,也会增加程序的可读性。  

但是下面这种情况就算添加尾缀也是错的,因为尾缀仅是为了告诉虚拟机该直接数属于什么数据类型,而不能实现数据类型强制转换。

long lNum = 1.2L;      //错误,double类型数据不能直接赋值给long类型
long lNew = (long)1.2; //正确,double类型数据强制转换为long类型

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
Java内存模型之happens-before概念详解
Jun 13 Java/Android
JPA如何使用entityManager执行SQL并指定返回类型
Jun 15 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
Java基础之this关键字的使用
Jun 30 Java/Android
Java中多线程下载图片并压缩能提高效率吗
Jul 01 Java/Android
新手初学Java List 接口
Jul 07 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
Mar 21 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
Apr 13 Java/Android
Elasticsearch 配置详解
Apr 19 Java/Android
JAVA 线程池(池化技术)的实现原理
Apr 28 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 #Java/Android
logback 实现给变量指定默认值
Aug 30 #Java/Android
SpringMVC 整合SSM框架详解
Aug 30 #Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
Aug 30 #Java/Android
logback如何自定义日志存储
Aug 30 #Java/Android
idea以任意顺序debug多线程程序的具体用法
Aug 30 #Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 #Java/Android
You might like
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
php中函数的形参与实参的问题说明
2010/09/01 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
javascript 闭包疑问
2010/12/30 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
轮播图组件js代码
2016/08/08 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
Python 文件重命名工具代码
2009/07/26 Python
浅析Python中signal包的使用
2015/11/13 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python中 logging的使用详解
2017/10/25 Python
遗传算法python版
2018/03/19 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
如何理解Python中的变量
2020/06/01 Python
浅谈Python中的字符串
2020/06/10 Python
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
网络工程师的自我评价
2013/10/02 职场文书
大学生标准推荐信范文
2013/11/25 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
党校学习心得体会范文
2014/09/09 职场文书
机动车登记业务委托书
2014/10/08 职场文书
个人整改措施书面材料
2014/10/24 职场文书
党支部四风整改方案
2014/10/25 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
捐书仪式主持词
2015/07/04 职场文书
八年级作文之感恩
2019/11/22 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript