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中重写父类方法加不加@Override详解
Jun 21 Java/Android
Java循环队列与非循环队列的区别总结
Jun 22 Java/Android
Feign调用传输文件异常的解决
Jun 24 Java/Android
Java中常用解析工具jackson及fastjson的使用
Jun 28 Java/Android
java解析XML详解
Jul 09 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
Sep 15 Java/Android
解决persistence.xml配置文件修改存放路径的问题
Feb 24 Java/Android
Java练习之潜艇小游戏的实现
Mar 16 Java/Android
Java实现二分搜索树的示例代码
Mar 17 Java/Android
SpringCloud项目如何解决log4j2漏洞
Apr 10 Java/Android
Java代码规范与质量检测插件SonarLint的使用
Aug 05 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
PHP生成随机密码类分享
2014/06/25 PHP
深入理解PHP内核(一)
2015/11/10 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
php中使用websocket详解
2016/09/23 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
python基础教程之udp端口扫描
2014/02/10 Python
python多线程用法实例详解
2015/01/15 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python学习入门细节知识点
2018/03/29 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
Pycharm Git 设置方法
2020/09/15 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
送给程序员的20个Java集合面试问题
2014/08/06 面试题
个人简历自我评价八例
2013/10/31 职场文书
跟单文员岗位职责
2014/01/03 职场文书
银行办公室岗位职责
2014/03/10 职场文书
乡镇办公室工作决心书
2014/03/11 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书