java int和Integer的区别

今天偶然和同学讨论到int和Integer的区别是,发现自己对这个问题了解的并不是很清楚,而且有些概念还是错的,所以在这对int和Integer的区别做一个总结。

 

int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别:

int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象

 

1.Java 中的数据类型分为基本数据类型和复杂数据类型

int 是基本数据类型 而integer 是复杂数据类型(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null.

2.初始化时:

  int i =1;

  Integer i= new Integer(1);(integer 是一个类);但由于有了自动装箱和拆箱使得对Integer类也可使用:Integer i= 1;  

   

  int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充),Integer 是一个类,是int的扩展,定义了很多的转换方法

  java一共有八种基本数据类型:字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double;每一个基本数据类型都有一个包装类,

                对应的包装类为Character,Booblean,Byte,Short,Integer,Long,Float,Double

  比如当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装 object的,这是就需要这些基本类型的包装类了。

 

 

   下面用一段代码来具体展示以下:

  

 1 /**
 2  * int 和Integer类型区别比较
 3  * 2016/5/4
 4  * 
 5  */
 6 package cn.Java_7;
 7 public class Campare {
 8     public static void main(String[] args) {
 9         Integer a = new Integer(127), b = new Integer(128);
10         int     c = 127,               d = 128, dd = 128;
11         Integer e = 127,               ee = 127, f = 128, ff = 128;
12         
13         System.out.println(a == b); //false  因为a,b都是new出来的对象,地址不同所以为false
14         System.out.println(a == c); //true    a会自动拆箱为int类型
15         System.out.println(a == e); //false    指向的地址不同a是new出来的
16         System.out.println(e == c); //true    e会自动拆箱为int类型
17         System.out.println(e == ee);//true    处于-128到127范围之间,指向了同一片地址区域
18         
19         System.out.println(b == f); // false    指向的地址不同b是new出来的
20         System.out.println(f == d); //true        f自动拆箱为int类型
21         
22         System.out.println(f == ff); /*false     指向的不是同一片地址区域  在Integer类型中,-128到127存放的是同一片区域地址,之外的数
23                                                     是另外开辟空间来进行    存储的*/
24         System.out.println(d == dd); // true    不解释
25     }
26 }

 

posted on 2016-05-05 00:43  snail-lb  阅读(1382)  评论(0编辑  收藏  举报