Long与long的区别

Java中数据类型分两种:

1.基本类型:long,int,byte,float,double
2.对象类型:Long,Integer,Byte,Float,Double其它一切java提供的,或者你本身建立的类。

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

什么是包装类?

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

好比咱们能够定义一个类:java

[java] view plain copy
public class Long { 
    int i=0; 
    public Long (int i){ 
        this.i=i; 
    } 
}  


这个Long 就是一个包装类,它包装了一个整数值,而后能够在里面写一些运算符重载的方法使它支持某些运算。这个时候能够赋值:
Long l = new Long(10);
如今变量 l 就是一个对象,不是一个数字。


long是原始数据类型,没有属性方法,只能进行数学运算,Long是long相对应的引用数据类型,它有方法和属性,一个没方法属性,一个有方法属性,这就是它们的区别。

看下面的小demo:this

long l = 1000; 
Long l3 = 1000L;
Long l1 = new Long(1000);
Long l2 = new Long(1000);
        
System.out.println(l==l1);//true 包装类自动拆箱为原始数据类型

System.out.println(l==l3);//true  包装类自动拆箱为原始数据类型

System.out.println(l3.equals(l1));//true

System.out.println(l3==l1); //false  l3在常量池中 l1在堆内存中

System.out.println(l1.equals(l2));  //true

System.out.println(l1==l2);   //false  


由此也能看出,Long定义的变量为一个Long类型的对象;而long定义的变量为一个长整形数值的数值变量。
 
ID用long仍是Long?
 
hibernate、el表达式等都是包装类型,用Long类型能够减小装箱/拆箱;
在hibernate中的自增的hid在实体中的类型要用Long 来定义而不是long。不然在DWR的匹配过程当中会出现Marshallingerror:null的错误提示。
 
究竟是选择Long 仍是long这个还得看具体环境,若是你认为这个属性不能为null,那么就用long,由于它默认初值为0,若是这个字段能够为null,那么就应该选择Long。spa

注意事项hibernate

相关文章
相关标签/搜索