java中用float时,数字后面加f,这样是为什么你知道吗

 更新时间:2021年09月03日 16:53:14   作者:春天里的小矮宝  
这篇文章主要介绍了java用float时,数字后面加f,这样是为什么你知道吗?具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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类型

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 对dbunit进行mybatis DAO层Excel单元测试(必看篇)

    对dbunit进行mybatis DAO层Excel单元测试(必看篇)

    下面小编就为大家带来一篇对dbunit进行mybatis DAO层Excel单元测试(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • JVM:早期(编译期)优化的深入理解

    JVM:早期(编译期)优化的深入理解

    今天小编就为大家分享一篇关于JVM:早期(编译期)优化的深入理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 在Java的Spring框架的程序中使用JDBC API操作数据库

    在Java的Spring框架的程序中使用JDBC API操作数据库

    这篇文章主要介绍了在Java的Spring框架的程序中使用JDBC API操作数据库的方法,并通过示例展示了其存储过程以及基本SQL语句的应用,需要的朋友可以参考下
    2015-12-12
  • Logback如何将日志输出到Kafka配置示例

    Logback如何将日志输出到Kafka配置示例

    logback是一个功能强大的Java日志框架,它是log4j的继任者,提供了丰富的功能和配置选项,本文将介绍Logback将日志输出到Kafka配置示例,感兴趣的朋友一起看看吧
    2024-12-12
  • Java8新特性Stream流实例详解

    Java8新特性Stream流实例详解

    Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。这篇文章主要介绍了Java8新特性Stream流的相关资料,需要的朋友参考下吧
    2017-10-10
  • Java 继承方法实例详解

    Java 继承方法实例详解

    这篇文章主要介绍了Java继承中方法实例,非常的实用,这里推荐给大家,有需要的小伙伴可以参考下
    2017-04-04
  • 初步解析Java中AffineTransform类的使用

    初步解析Java中AffineTransform类的使用

    这篇文章主要介绍了Java中AffineTransform类的使用,AffineTransform类经常被用来处理图片,需要的朋友可以参考下
    2015-10-10
  • SpringCloud Feign传递HttpServletRequest对象流程

    SpringCloud Feign传递HttpServletRequest对象流程

    HttpServletRequest接口的对象代表客户端的请求,当客户端通过HTTP协议访问Tomcat服务器时,HTTP请求中的所有信息都封装在HttpServletRequest接口的对象中,这篇文章介绍了Feign传递HttpServletRequest对象的流程,感兴趣的同学可以参考下文
    2023-05-05
  • 剑指Offer之Java算法习题精讲链表与二叉树专项训练

    剑指Offer之Java算法习题精讲链表与二叉树专项训练

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • SpringBoot yaml中的数组类型取值方式

    SpringBoot yaml中的数组类型取值方式

    这篇文章主要介绍了SpringBoot yaml中的数组类型取值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论