展开
1. 添加尾缀说明

  我们知道Java在变量赋值的时候,其中float、double、long数据类型变量,需要在赋值直接量后面分别添加f或F、d或D、l或L尾缀来说明。 
  其中,long类型最好以大写L来添加尾缀,因为小写l容易和数字1混淆。 
  例如:

  1. long lNum = 1234L;
  2. float fNum = 1.23f;
  3. double dNum = 1.23d;

  这是Java语法规定,不添加尾缀很容易引起编译器报错,并且程序可读性也会变差。
2. 不添加尾缀也不会报错的情况

  Java语言中,整数直接量(例如:1、2、10等),JVM虚拟机是默认为int类型数据的。所以,当整数直接量赋给long、float或者double,而不添加尾缀,虚拟机也会直接将int类型数据自动转换为对应类型然后赋值。因为数据长度短的转换为长的并不会造成数据丢失,所以默认可以自动转换。  
  例如:

  1. long lNum = 5; //不报错,因为int自动转换为long类型,不会报错
  2. float fNum = 7; //不报错,因为int自动转换为float类型,不会报错
  3. double dNum = 10; //同上

  但是,当浮点直接量(例如:1.2等),JVM虚拟机默认为double类型,如果直接赋值给float就会引起编译器报错。

float fNum  = 1.2; //报错,因为1.2虚拟机是默认为double类型,不能直接赋值给float类型变量
float fNew  = 1.3f;//正确,因为尾缀添加了f,即告诉了虚拟机1.3属于float类型变量
1
2

3. 总结

  所以,当Java中遇到这三种类型变量需要赋直接量时候,最好都添加上相应的尾缀。这样不仅会防止编译器报错,也会增加程序的可读性。 
  但是下面这种情况就算添加尾缀也是错的,因为尾缀仅是为了告诉虚拟机该直接数属于什么数据类型,而不能实现数据类型强制转换。

long lNum = 1.2L;      //错误,double类型数据不能直接赋值给long类型
long lNew = (long)1.2; //正确,double类型数据强制转换为long类型
————————————————
版权声明:本文为CSDN博主「~ 知至~」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/S_999999/article/details/85943791

Java中float、double、long类型变量赋值添加f、d、L尾缀问题的更多相关文章

  1. java中float/double浮点数的计算失精度问题(转)

    如果我们编译运行下面这个程序会看到什么? public class Test  {    public static void main(String args[]) {                ...

  2. Java中float/double取值范围与精度

    Java浮点数 浮点数结构 要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个 ...

  3. 神奇:java中float,double,int的值比较运算

    float x = 302.01f;    System.out.println(x == 302.01); //false  System.out.println(x == 302.01f); // ...

  4. Java中 float、double使用注意问题

    在java中运行一下代码 System.out.println(2.00-1.10);输出的结果是:0.8999999999999999很奇怪,并不是我们想要的值0.9 再运行如下代码:System. ...

  5. Java中float和double转换的问题

    为什么double转float不会出现数据误差,而float转double却误差如此之大?   double d = 3.14; float f = (float)d; System.out.prin ...

  6. java中String new和直接赋值的区别

        Java中String new和直接赋值的区别     对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...

  7. 精确计算java中float和double的精度

    [本文相关的代码放在github上.地址为:https://github.com/VigourJiang/StructuredFloat] Java中double类型的格式基本遵循IEEE 754标准 ...

  8. Java中数据类型转换&基本类型变量和对象型变量

    1.Java的数据类型分为三大类 布尔型,字符型和数值型 其中数值型又分为整型和浮点型 2.Java的变量类型 布尔型 boolean 字符型 char 整型    byte,short,int,lo ...

  9. Java中关于Integer, String 类型变量 == 与 equals 判断的坑

    == 与 equals()的联系: ==: 我们都知道Java中 == 对用于基础数据类型(byte, short, int, long, float, double, boolean, char)判 ...

随机推荐

  1. Hexo博客部署到腾讯云服务器全过程(Nginx,证书,HTTPS),你要的这里都有

    背景 说来也惭愧,博客已经搭建很久了,一直免费的部署在 Coding 和 Github Pages 上,前者迁移到腾讯云 Serverless,导致原有的配置始终有问题,没时间仔细研究,刚好腾讯服务器 ...

  2. JSON生成Java实体类

    https://www.bejson.com/json2javapojo/new/ 至于效果怎么样,自己试一下就知道了

  3. PHP DateTime类常用方法总结

    实例化: $date = new DateTime(); $date = new DateTime('2018-01-01'); $date = new DateTime('tomorrow'); $ ...

  4. 初识python:scoket 单用户互发消息

    实现功能: 启动"服务器".通过"客户端1"连接"服务器",然后互发消息.在此过程中,有"客户端2"连接到"服 ...

  5. 使用 spring security 中的BcryptPasswordEncoder对象对用户密码进行加密

    一.引入security启动器 在子工程中直接引入,不用指定版本号 二.在启动类中把BCryptPasswordEncoder对象注入到容器中 三.在service 层注入 四. 调用encode方法 ...

  6. centos7 重定向符号

    这篇只记录使用对应的使用方法,原理后期更新 >> 追加输出 <<追加输入 >输出 <输入 将正确和错误信息同事保留到一个文件 echo "this is ...

  7. Java语言学习案例雷霆战机

    1.Java雷霆战机学习笔记(一)-资源加载 https://www.toutiao.com/i6631331313259381255/ 2.Java雷霆战机学习笔记(二)-音乐播放 https:// ...

  8. 深度介绍Flink在字节跳动数据流的实践

    本文是字节跳动数据平台开发套件团队在1月9日Flink Forward Asia 2021: Flink Forward 峰会上的演讲分享,将着重分享Flink在字节跳动数据流的实践. 字节跳动数据流 ...

  9. Spring系列1:Spring基本概念

    本文内容 什么是Spring? 为什么学Spring? 本系列包含哪些技术? 本系列适合哪些人? 什么是Spring? 基本概念 Spring 框架为现代基于 Java 的企业应用程序提供了一个全面的 ...

  10. linux高大上命令001

        [ linux命令 sed ] sed是一个管道命令,可以分析standard input 而且sed可以将数据进行替换.删除.新增.选取的特定的功能 sed [-nefr] [动作] -n ...