Java的长整型Long/long后面的数字什么情况下必须加L?
[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、数字后面加了l
或L
后,类型变为长整型,第二句自然没问题;
3、int能表示的数字有一定范围,超过这个范围必须加l
或L
才不会出错,所以第三句出错,第四句正确。
【注】由第一行的代码可以联想到,为什么每次定义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、使用long
和new Long()
定义时,当数字超过int类型的表示范围时必须要在数字后加L
;
2、使用Long
定义时,数字必须要加L
。
Java的长整型Long/long后面的数字什么情况下必须加L?相关推荐
- java长整型时间转日期_C#长整型时间与java长整型时间转换
最近在有一个解析并转发病毒软件日志的活,这个软件用的是SQLite嵌入式数据库存储病毒日志.查询病毒记录后,我发现它用长整型存储攻击时间这个字段,而且是一个10位的值.而我的解析系统是用C#写的,C# ...
- php mongo二级查询时间,php查询MongoDB遇到长整型的问题
困扰了我一天的问题.首先是Mongodb副本集.查php的Mongo扩展手册把副本集搞定.然后又是长整型时间的问题. 存进mongo的是java的长整型时间戳.而php是弱类型语言,且php的时间戳是 ...
- python长整型怎么用_Python整型运算之布尔型、标准整型、长整型操作示例
导读热词 本文实例讲述了Python整型运算之布尔型.标准整型.长整型操作.分享给大家供大家参考,具体如下: #coding=utf8 def integerType(): ''''' 布尔型: 该值 ...
- python长整型是什么_Python【数据类型】
我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,"汉"是文字否则它是分不清1和汉的区别的,因此 ...
- python 长整型_Python整型运算之布尔型、标准整型、长整型操作示例
本文实例讲述了Python整型运算之布尔型.标准整型.长整型操作.分享给大家供大家参考,具体如下: #coding=utf8 def integerType(): ''''' 布尔型: 该值的取值范围 ...
- python长整型怎么用_Python整型:布尔型、标准整型、长整型操作实例
#coding=utf8 def integerType(): ''' 布尔型: 该值的取值范围只有两个值:True(1).False(0) ''' Tbool=True Fbool=False pr ...
- Java | 由天数计算日期:长整型long转换为日期
如题,晚上突发奇想要写个程序算一下和烧饼是哪天认识的,记得很多年前QQ是能看加好友的时间的,现在却只能看认识天数了,所以只好自己动手啦. 用的是Java,这是上学期学的内容了,但知识全还给老师了,花了 ...
- java长整型转换为整型_java ip地址转换为长整型
java ip地址转换为长整型 java ip地址转换为长整型: public class Util { /** * 字符串ip转换为long * @param 字符串ip * @return */ ...
- java长整型数输入格式_java编程之计算16位长整型数字中0-9出现次数(从命令窗输入数据)...
/* *读入一个16位的长整型,利用switch语句计算0-9这十个数字中,每个字出现的次数 **/ import java.util.Scanner; class number{ public st ...
最新文章
- ERP选型技巧之“三不要一要”
- 32位CPU和64位CPU 区别
- LINUX 内核代码备忘录
- 【招聘(西安)】深圳市中兴云服务有限公司.NET工程师
- android应用内存不断膨胀,在android中膨胀简单的xml布局时出现内存不...
- HDU1282 回文数猜想【回文】
- 去除android或者iOS系统默认的一些样式总结
- Cuiwei Li / Detection of ECG characteristic points using wavelet transforms
- 设计模式(二)--单例模式
- ZA7783是一颗将单路MIPI DSI信号转换成单路LVDS/TTL信号的转接芯片
- CHI到底是干嘛的 保证cache一致性 2.3 snoop
- 画以载道:艺术演变的动力与社会思潮的嬗变
- [详解] iphone手机备份、升级流程
- 卧槽,这也真的太上头了吧
- 正则表达式检测电子邮件_电子邮件中的垃圾邮件检测
- 长春理工计算机学院保研外校,长春理工大学174被保研:近7成保研985高校,还有清华、北大……...
- 微信「搜一搜」功能简直就是宝藏功能,原来这么好用!
- 基于802.1x协议的接入认证简单实现
- 第100001个素数是什么?_蓝桥杯
- Android实用代码1 - 转自农民伯伯