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如何集成swagger组件
Jun 21 Java/Android
Java SSH 秘钥连接mysql数据库的方法
Jun 28 Java/Android
浅谈resultMap的用法及关联结果集映射
Jun 30 Java/Android
SpringBoot工程下使用OpenFeign的坑及解决
Jul 02 Java/Android
Java Socket实现多人聊天系统
Jul 15 Java/Android
SpringBoot快速入门详解
Jul 21 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
Spring中的使用@Async异步调用方法
Nov 01 Java/Android
SpringBoot+Redis实现布隆过滤器的示例代码
Mar 17 Java/Android
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 Java/Android
Java虚拟机内存结构及编码实战分享
Apr 07 Java/Android
Java数组详细介绍及相关工具类
Apr 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
如何离线执行php任务
2017/02/21 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
layui导航栏实现代码
2017/05/19 Javascript
js编写选项卡效果
2017/05/23 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python 第一步 hello world
2009/09/25 Python
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
Python调用C++程序的方法详解
2017/01/24 Python
Python面向对象程序设计示例小结
2019/01/30 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
python 实现让字典的value 成为列表
2019/12/16 Python
简单了解Django项目应用创建过程
2020/07/06 Python
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
集体婚礼证婚词
2014/01/13 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
钳工实训报告总结
2014/11/04 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
计划生育汇报材料
2014/12/26 职场文书
小学教代会开幕词
2016/03/04 职场文书
分享Python获取本机IP地址的几种方法
2022/03/17 Python