Integer和int的区别

 

Java两种数据类型

 

1):基本数据类型byte,char,short  int float long doubleboolean

 

2):引用数据类型: 数组、类、接口。

 

级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double

 

自动类型转换:从低级别到高级别,系统自动转的;

 

强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;

 

【八种基本数据类型的包装类】

byte ——Byte  char----Character short ——Short int ——Integer float-----Float  long-----Long  double----Double  boolean---Boolean

 

Integer和int的区别:Integer [ˈɪntɪdʒə(r)]

1.Integer是int的包装类int则是java的一种基本数据类型 
Integer的初值为nullint的初值为0Integer 是类,默认值为null,int是基本数据类型,默认值为0

Integer实际是对象的引用(new一个Integer时,实际上是生成一个指针指向此对象int则是直接 存储数据值 

 

2. Integer与new Integer比:无论值是否相同,Integer与new Integer都不会相等,结果为false

  情况一:Integer范围在-128~127之间,指向专门存放它的常量池;new Integer引用指向堆。它们的内存地址不一样,所以无论值是否相同,比较结果都为false。

  情况二:Integer范围不在-128~127之间,编译时Integer.valueOf()返回的是new Integer();而new Integer引用指向堆。这样两者是两个不同的堆栈对象,无论堆上的值是否相同,引用地址不同,比较结果都为false。

  情况三:两个Integer范围都不在-128~127之间,则依然是两个new Integer对象,则比较结果为false。

 

3 .两个 new出来的Integer相比:两个都是new出来的,无论堆上的值是否相同,引用地址不同,结果为false

 

4.两个 new出来的Integer相比: 两个都是非new出来的Integer,如果数在-128~127之间,值相同则为true,否则为false

原因:java在编译Integer时,会翻译成Integer i = Integer.valueOf(),而valueOf()会对-128~127之间的数进行缓存。

 

5.int和Integer比无论Integer是new出来的 还是-128~127范围之外的,值相同则为true,否则为false

原因:Integer与int比较时,Integer会自动拆箱为int

 

Integer 的自动拆箱和装箱

自动装箱 就是Integer.valueOf(int i);  

自动拆箱  就是 i.intValue();

自动装箱规范要求 byte<= 127、char<=127、-128<=short <=127、-128<=int <=127都被包装到固定的对象中(缓存)。

自动拆箱: Integer 类表示的数据赋值给基本数据类型int,就执行了自动拆箱。

通过基本数据类型的包装来的valueOf和parseXX来实现String转为XX

 

posted @ 2019-03-14 17:32  浅嫣  阅读(238)  评论(0编辑  收藏  举报