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再去比。

posted @ 2018-03-23 11:29  大乘之道  阅读(390)  评论(0编辑  收藏  举报