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 相关文章推荐
SpringAop日志找不到方法的处理
Jun 21 Java/Android
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
浅谈Python魔法方法
Jun 28 Java/Android
ObjectMapper 如何忽略字段大小写
Jun 29 Java/Android
Java中多线程下载图片并压缩能提高效率吗
Jul 01 Java/Android
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
Jul 16 Java/Android
Sleuth+logback 设置traceid 及自定义信息方式
Jul 26 Java/Android
Log4j.properties配置及其使用
Aug 02 Java/Android
关于maven依赖 ${xxx.version}报错问题
Jan 18 Java/Android
Android Studio实现简易进制转换计算器
May 20 Java/Android
java中如何截取字符串最后一位
Jul 07 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中实现进程间通讯
2006/10/09 PHP
第二节--PHP5 的对象模型
2006/11/16 PHP
Php Cookie的一个使用注意点
2008/11/08 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
详解JS函数防抖
2020/06/05 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
连接Python程序与MySQL的教程
2015/04/29 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
python自动发送邮件脚本
2018/06/20 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
django项目中新增app的2种实现方法
2020/04/01 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
银行求职信个人范文
2013/12/16 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
大学军训口号大全
2015/12/24 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
Java数组详细介绍及相关工具类
2022/04/14 Java/Android