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 11 Java/Android
java Nio使用NioSocket客户端与服务端交互实现方式
Jun 15 Java/Android
实体类或对象序列化时,忽略为空属性的操作
Jun 30 Java/Android
Java基础之this关键字的使用
Jun 30 Java/Android
mybatis中注解与xml配置的对应关系和对比分析
Aug 04 Java/Android
Java中CyclicBarrier和CountDownLatch的用法与区别
Aug 23 Java/Android
Java详细解析==和equals的区别
Apr 07 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 Java/Android
MyBatis在注解上使用动态SQL方式(@select使用if)
Jul 07 Java/Android
springboot+rabbitmq实现智能家居实例详解
Jul 23 Java/Android
IDEA中sout快捷键无效问题的解决方法
Jul 23 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入门速成教程
2007/03/19 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
php-fpm中max_children的配置
2019/03/15 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
禁止F5等快捷键的JS代码
2007/03/06 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
微信小程序block的使用教程
2018/04/01 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
Python socket 套接字实现通信详解
2019/08/27 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
预备党员党课思想汇报
2014/01/13 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
警示教育片观后感
2015/06/17 职场文书
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript