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
MyBatis-Plus 批量插入数据的操作方法
Sep 25 Java/Android
Java异常处理try catch的基本用法
Dec 06 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
Android超详细讲解组件ScrollView的使用
Mar 31 Java/Android
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
Apr 19 Java/Android
Flutter Navigator 实现路由传递参数
Apr 22 Java/Android
Spring Data JPA框架自定义Repository接口
Apr 28 Java/Android
Android Studio 计算器开发
May 20 Java/Android
Java中Dijkstra(迪杰斯特拉)算法
May 20 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
java.util.NoSuchElementException原因及两种解决方法
Jun 28 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
解析argc argv在php中的应用
2013/06/24 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
python模块导入的细节详解
2018/12/10 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
python使用建议与技巧分享(一)
2020/08/17 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
加热夹克:RAVEAN
2018/10/19 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
怎么写好自荐书
2014/03/02 职场文书
国企干部对照检查材料
2014/08/22 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
停课通知书
2015/04/24 职场文书
董事长年会致辞
2015/07/29 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python