Java——你知道long和Long有什么区别吗?

欢迎大家关注我的新书《Spring Boot趣味实战课》

 

 京东 当当 天猫

 

Java中数据类型分两种:
1.基本类型:long,int,byte,float,double
2.对象类型:Long,Integer,Byte,Float,Double其它一切java提供的,或者你自己创建的类。

其中Long叫 long的包装类。Integer、Byte和Float也类似,一般包装类的名字首写是数值名的大写开头。


什么是包装类?


在java中有时候的运算必须是两个类对象之间进行的,不充许对象与数字之间进行运算。所以需要有一个对象,这个对象把数字进行了一下包装,这样这个对象就可以和另一个对象进行运算了。


比如我们可以定义一个类:

public class Long {
	int i=0;
	public Long (int i){
		this.i=i;
	}
}


这个Long 就是一个包装类,它包装了一个整数值,然后可以在里面写一些运算符重载的方法使它支持某些运算。这个时候可以赋值:
Long l = new Long(10);
现在变量 l 就是一个对象,不是一个数字。
long是原始数据类型,没有属性方法,只能进行数学运算,Long是long相对应的引用数据类型,它有方法和属性,一个没方法属性,一个有方法属性,这就是它们的区别。


看下面的小程序:

long l = 1;
Long l1 = new Long(1); 
Long l2 = new Long(1); 

if (l == l1){ 
	System.out.println("=====l与l1相等=====");
 } 

if(l == l2){ 
	System.out.println("=====l与l2相等=====");
}

if(l1 == l2){
	System.out.println("=====l1与l2相等=====");
 }		 


输出:

=====l与l1相等=====
=====l与l2相等=====


如果将第三个if语句的条件换成"l1.equals(l2)",那么输出结果就会变成:

=====l与l1相等=====
=====l与l2相等=====
=====l1与l2相等=====


由此也能看出,Long定义的变量为一个Long类型的对象;而long定义的变量为一个长整形数值的数值变量。

 
ID用long还是Long?

 
hibernate、el表达式等都是包装类型,用Long类型可以减少装箱/拆箱;

在hibernate中的自增的hid在实体中的类型要用Long 来定义而不是long。否则在DWR的匹配过程中会出现Marshallingerror:null的错误提示。
 
到底是选择Long 还是long这个还得看具体环境,如果你认为这个属性不能为null,那么就用long,因为它默认初值为0,如果这个字段可以为null,那么就应该选择Long。

  • 23
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘水镜

文章写得不错,我要让更多人看到

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值