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的,这是就需要这些基本类型的包装类了。

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

  

 /**
* int 和Integer类型区别比较
* 2016/5/4
*
*/
package cn.Java_7;
public class Campare {
public static void main(String[] args) {
Integer a = new Integer(127), b = new Integer(128);
int c = 127, d = 128, dd = 128;
Integer e = 127, ee = 127, f = 128, ff = 128; System.out.println(a == b); //false 因为a,b都是new出来的对象,地址不同所以为false
System.out.println(a == c); //true a会自动拆箱为int类型
System.out.println(a == e); //false 指向的地址不同a是new出来的
System.out.println(e == c); //true e会自动拆箱为int类型
System.out.println(e == ee);//true 处于-128到127范围之间,指向了同一片地址区域 System.out.println(b == f); // false 指向的地址不同b是new出来的
System.out.println(f == d); //true f自动拆箱为int类型 System.out.println(f == ff); /*false 指向的不是同一片地址区域 在Integer类型中,-128到127存放的是同一片区域地址,之外的数
是另外开辟空间来进行 存储的*/
System.out.println(d == dd); // true 不解释
}
}
上一篇:Share Today


下一篇:Caffe源码中syncedmem文件分析