int与Integer,long与Long的区别以及装箱与拆箱的理解
来源:互联网 发布:开源windows系统 编辑:程序博客网 时间:2024/05/23 02:00
1,从数据类型看:int和long是基本数据类型,对其赋值属于数值引用,只能对其进行数值运算
Integer和Long是对象类型,既然是对象那就有属性,有方法,这都是基本数据类型不包含的.
2,在实际使用中,对二者要注意的便是,int和long的默认值是0,使用时不用对其做null判断,也就不会出现NoPointerException这种异常,反之,Integer和Long的默认值是null,当对其使用toString()等方法时,如果不判断null就很有可能出现空指针异常.
再者在定义表结构时,如果设主键为自增长型的,那只能是int或long.至于其它字段要看情况了,如果不能为null,且是数字型的那就设定为基本数据类型的,
3,拆箱与装箱
Java的基本数据类型有
boolean char byte short int float long double
对应的对象(即包装类)为
Boolean Character Byte Short Integer Float Long Double
所谓的拆箱就是对象类型转基本数据类型时,会隐式的调用valueOf()方法去比较值的大小.装箱就是在进行类似Integer a=100时类似的操作时,就如同执行了Integer a=new Integer(100)的构造方法去创建a这个对象.
Integer a=100;//属于自动装箱,把值直接赋给一个对象.在自动打包时,127~-128的数值在内存会供重用Integer b=100;System.out.println(a==b);//true 虽然比较的是两个对象,但是jdk5.0后,对-128-127这个范围内的整形对象进行了缓存,实际是自动调用了两个Integer的valueOf()方法Integer c=1000;Integer d=1000;System.out.println(c==d);//false 比较的是两个对象,虽然值一样,但是引用地址不一样,且不再-128-127之间所以不会默认调用valueOf方法System.out.println(c.equals(d));//true 比较的是两个对象的值int e=1000;System.out.println(e==c);//true c自动拆包,对象c隐式的调用了valueOf()方法,即自动拆包,比较二者的值Integer f=new Integer(e);//非自动打包System.out.println(f==e);//true 同上Integer g=new Integer(c);System.out.println(g==c);//false 虽然c对象作为入参放大到了g对象的构造函数里面,但是默认的构造函数参数是int类型,所以c自动拆包了,因此g和c是对象之间的比较System.out.println(g.equals(c));//true 比较值Long al=127l;Long bl=127l;System.out.println(al==bl);//true -128-127之间,同intLong cl=128l;Long dl=128l;System.out.println(cl==dl);//false 不再-128-127之间,同int
阅读全文
1 0
- int与Integer,long与Long的区别以及装箱与拆箱的理解
- long long 与int的区别
- long long 与int的区别
- long(Long)与int(Integer)之间的转换
- __int64与long long、long的区别
- __int64与long long、long的区别
- int与long区别
- int与long区别
- int与long区别
- int与long long之间的转换
- int 与 long 、long long
- Long与Integer的总结
- DSP28335的long与int
- sprintf以及__int64 与long long int
- Integer与int的装箱(缓存)与拆箱
- __int64 与long long 的区别
- __int64 与long long 的区别
- __int64 与long long 的区别
- excel插入图片自动适应表格大小
- struts2之单个文件上传
- OrgChart组织架构图控件
- VBox下centos虚拟机与主机
- PAT(Basic Level)_1046_划拳
- int与Integer,long与Long的区别以及装箱与拆箱的理解
- 联合索引
- 生成字母验证码图片
- jQuery简易左侧固定菜单
- 【洛谷1291】百事世界杯之旅
- Jenkins构建时’Users/Mac/Library/Android/sdk’ does not exist问题
- git常用命令
- 【Maven】Maven打包失败,程序包com.sun.deploy.net不存在
- Linux常用命令查看硬盘资源(free、top)