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 相关文章推荐
Spring Data JPA使用JPQL与原生SQL进行查询的操作
Jun 15 Java/Android
java Nio使用NioSocket客户端与服务端交互实现方式
Jun 15 Java/Android
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
关于Mybatis中SQL节点的深入解析
Mar 19 Java/Android
Java十分钟精通进阶适配器模式
Apr 06 Java/Android
Java数据结构之堆(优先队列)
May 20 Java/Android
Spring IOC容器Bean的作用域及生命周期实例
May 30 Java/Android
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
Jun 01 Java/Android
java实现自定义时钟并实现走时功能
Jun 21 Java/Android
httpclient调用远程接口的方法
Aug 14 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多文件上传实现代码
2014/02/20 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
python小程序实现刷票功能详解
2019/07/17 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
《中华少年》教学反思
2014/02/15 职场文书
yy婚礼主持词
2014/03/14 职场文书
房屋转让协议书范本
2014/04/11 职场文书
生产操作工岗位职责
2014/09/16 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
python中的random模块和相关函数详解
2022/04/22 Python
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技