java的int与Integer区别

一句话:int是基本数据类型,Integer是类。

详细:

  1. 由于是对象,Integer默认值是null,而int是0;Integer需要实例化才能使用,int可以直接使用。
  2. Integer是int的包装类。再integer与int类型直接比较的时候系统会自动做些动作方便使用(比如自动对Integer解析成int再比较)。

一些案例帮助理解:

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false,引用类型比较

Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true,Integer会自动解析成int再比较

Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false,前者指向堆内存中的对象,后者指向java常量池中的对象

Integer i = 128; // 相当于Integer i = Integer.valueOf(128),-128到127会被缓存,超过范围则会new
Integer j = 128;
System.out.print(i == j); //false

Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true,因为被缓存,实际上对应常量池中同一个对象

参考文章:
int与Integer区别

你可能感兴趣的:(java的int与Integer区别)