[1] 问题的由来

  在日常开发中,实体类需要序列化,一般写法如下:

public class User implements java.io.Serializable {private static final long serialVersionUID = 1L;// 用户idprivate Long user_id;}

  上述代码中,private static final long serialVersionUID = 1L;,数字1后面为什么要加L

  要想彻底搞懂这个问题,我们要先理解:

  1、Java中整型直接量在没有加后缀的时候默认为int,但是当它被赋值给某个变量(这个变量是short型,int型,byte型中的一种)时,则会自动转化成相对应的类型;
  2、Java的4个整数基本类型:byte->short->int->long;
  3、向上转型、向下转型;
  4、装箱、拆箱;

  下面我们分情况讨论,定义长整型时,什么时候应该加L,什么时候可以不加L

[2] 用long定义长整型数字时

long a = 1;  // 类型int向上转型为long
long a = 1L; // 类型直接定义为longlong a = 2147483648;  // 错误 int的最大表示范围是2147483647
long a = 2147483648L; // 正确 2147483648为长整型

  上面四行代码:

  1、由于Java默认数字是int类型的,而int向上转型为long是安全的,所以第一句正确执行;
  2、数字后面加了lL后,类型变为长整型,第二句自然没问题;
  3、int能表示的数字有一定范围,超过这个范围必须加lL才不会出错,所以第三句出错,第四句正确。

【注】由第一行的代码可以联想到,为什么每次定义byte、short、int类型可以直接写,定义long类型要注意加L的情况。

[3] 用Long定义长整型数字时

Long a = 1;  // 错误 Long的自动装箱必须要求long类型的数字
Long a = 1L; // 正确 1L是long类型 自动装箱Long a = new Long(1); // 正确 Long构造器的形参要求long类型的数字,int类型可以向上转型为long类型
Long a = new Long(1L); // 正确 1L是long类型Long a = new Long(2147483648);  // 错误 int的最大表示范围是2147483647,表示错误
Long a = new Long(2147483648L); // 正确 2147483648为长整型

  上面六行代码:

  1、自动装箱严格要求对应的基本类型要一致,所以第1行错误第2行正确;
  2、使用构造器创建Long类型数字时,形参是long类型,int类型可以去向上转型,所以第3、4行正确;
  3、使用构造器时,必须注意int不可以超过范围。


[4] 综上可得两种必须加L的情况

  1、使用longnew Long()定义时,当数字超过int类型的表示范围时必须要在数字后加L
  2、使用Long定义时,数字必须要加L

Java的长整型Long/long后面的数字什么情况下必须加L?相关推荐

  1. java长整型时间转日期_C#长整型时间与java长整型时间转换

    最近在有一个解析并转发病毒软件日志的活,这个软件用的是SQLite嵌入式数据库存储病毒日志.查询病毒记录后,我发现它用长整型存储攻击时间这个字段,而且是一个10位的值.而我的解析系统是用C#写的,C# ...

  2. php mongo二级查询时间,php查询MongoDB遇到长整型的问题

    困扰了我一天的问题.首先是Mongodb副本集.查php的Mongo扩展手册把副本集搞定.然后又是长整型时间的问题. 存进mongo的是java的长整型时间戳.而php是弱类型语言,且php的时间戳是 ...

  3. python长整型怎么用_Python整型运算之布尔型、标准整型、长整型操作示例

    导读热词 本文实例讲述了Python整型运算之布尔型.标准整型.长整型操作.分享给大家供大家参考,具体如下: #coding=utf8 def integerType(): ''''' 布尔型: 该值 ...

  4. python长整型是什么_Python【数据类型】

    我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,"汉"是文字否则它是分不清1和汉的区别的,因此 ...

  5. python 长整型_Python整型运算之布尔型、标准整型、长整型操作示例

    本文实例讲述了Python整型运算之布尔型.标准整型.长整型操作.分享给大家供大家参考,具体如下: #coding=utf8 def integerType(): ''''' 布尔型: 该值的取值范围 ...

  6. python长整型怎么用_Python整型:布尔型、标准整型、长整型操作实例

    #coding=utf8 def integerType(): ''' 布尔型: 该值的取值范围只有两个值:True(1).False(0) ''' Tbool=True Fbool=False pr ...

  7. Java | 由天数计算日期:长整型long转换为日期

    如题,晚上突发奇想要写个程序算一下和烧饼是哪天认识的,记得很多年前QQ是能看加好友的时间的,现在却只能看认识天数了,所以只好自己动手啦. 用的是Java,这是上学期学的内容了,但知识全还给老师了,花了 ...

  8. java长整型转换为整型_java ip地址转换为长整型

    java ip地址转换为长整型 java ip地址转换为长整型: public class Util { /** * 字符串ip转换为long * @param 字符串ip * @return */ ...

  9. java长整型数输入格式_java编程之计算16位长整型数字中0-9出现次数(从命令窗输入数据)...

    /* *读入一个16位的长整型,利用switch语句计算0-9这十个数字中,每个字出现的次数 **/ import java.util.Scanner; class number{ public st ...

最新文章

  1. ERP选型技巧之“三不要一要”
  2. 32位CPU和64位CPU 区别
  3. LINUX 内核代码备忘录
  4. 【招聘(西安)】深圳市中兴云服务有限公司.NET工程师
  5. android应用内存不断膨胀,在android中膨胀简单的xml布局时出现内存不...
  6. HDU1282 回文数猜想【回文】
  7. 去除android或者iOS系统默认的一些样式总结
  8. Cuiwei Li / Detection of ECG characteristic points using wavelet transforms
  9. 设计模式(二)--单例模式
  10. ZA7783是一颗将单路MIPI DSI信号转换成单路LVDS/TTL信号的转接芯片
  11. CHI到底是干嘛的 保证cache一致性 2.3 snoop
  12. 画以载道:艺术演变的动力与社会思潮的嬗变
  13. [详解] iphone手机备份、升级流程
  14. 卧槽,这也真的太上头了吧
  15. 正则表达式检测电子邮件_电子邮件中的垃圾邮件检测
  16. 长春理工计算机学院保研外校,长春理工大学174被保研:近7成保研985高校,还有清华、北大……...
  17. 微信「搜一搜」功能简直就是宝藏功能,原来这么好用!
  18. 基于802.1x协议的接入认证简单实现
  19. 第100001个素数是什么?_蓝桥杯
  20. Android实用代码1 - 转自农民伯伯

热门文章

  1. python能解决什么数据问题_浅谈Python数据分析
  2. 牛客练习赛52 BGalahad 树状数组
  3. 在PYNQ-Z2上移植RISC-V
  4. pytorch基于yolo目标检测的智慧课堂系统
  5. C语言之memset函数
  6. 供应链金融不同融资模式的风险应对措施
  7. Mac环境下安装MongoDB数据库
  8. 一名程序员心态的重要性
  9. 10-1枚举类的使用
  10. 实验一.Python安装与开发环境搭建