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中的深浅拷贝问题
Jun 26 Java/Android
Java数组与堆栈相关知识总结
Jun 29 Java/Android
Java实现多文件上传功能
Jun 30 Java/Android
使用Springboot实现健身房管理系统
Jul 01 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
java设计模式--三种工厂模式详解
Jul 21 Java/Android
Java生成日期时间存入Mysql数据库的实现方法
Mar 03 Java/Android
Java 数据结构七大排序使用分析
Apr 02 Java/Android
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
Apr 19 Java/Android
java版 简单三子棋游戏
May 04 Java/Android
JavaScript正则表达式实现注册信息校验功能
May 30 Java/Android
java实现自定义时钟并实现走时功能
Jun 21 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
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
php实现的操作excel类详解
2016/01/15 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
php中使用websocket详解
2016/09/23 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
JS文本框不能输入空格验证方法
2013/03/19 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
寻找网站后台地址的python脚本
2014/09/01 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Python实现包含min函数的栈
2016/04/29 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
自我介绍演讲稿
2014/01/15 职场文书
工地安全检查制度
2014/02/04 职场文书
酒店大堂副理的职责范文
2014/02/13 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
工人先进事迹材料
2014/12/26 职场文书
工会积极分子个人总结
2015/03/03 职场文书
聘任书范文大全
2015/09/21 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
一文读懂navicat for mysql基础知识
2021/05/31 MySQL