Java中的原始类型和包装类型

  Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换,对应如下:

  原始类型:boolean,char,byte,short,int,long,float,double

  包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

  顺便一提,java中的基本数据来行只有以上8个,除了基本类型(primitive type),剩下的都是引用类型(rederence type)。

  区别:

  1. Integer时int的包装类,int的初始值为0,Integer的初值为null;

  2. 无论如何,Integer与new Integer不会相等。不会经历拆箱过程,new出来的对象存放在堆,而非new的Integer常量则在常量池(在方法区),它们的内存地址不一样;

  3. 两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。因为java在编译Integer i2 = 128的时候,被翻译成:Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存。

  4. 两个都是new出来的,都为false,还是内存地址不一样。

  5. int和Integer(无论new否)比,都为ture,因为会把Integer自动拆箱为int再去比。

转载于:https://www.cnblogs.com/xietao/p/8629324.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值