Java基础–int与Integer区别

  • 2020 年 2 月 13 日
  • 筆記

看过java相关入门开发的书籍的应该都知道,这个标题其实涉及到两个问题:

  1. java基本数据类型和引用类型
  2. 自动拆箱自动装箱 下面就这两个问题进行一下总结复习。

一、java基本数据类型和引用类型

java在最初设计的时候就提供了8种基本数据类型和对应的8种引用类型。 基本数据类型|封装类型 —|— byte|Byte short|Short int|Integer long|Long float|Float double|Double boolean|Boolean char |Character

二、自动拆箱和自动装箱

Integer n = 100 //编译器自动使用Integer.valueOf(int)  称为自动装箱  int x = n //编译器自动使用 Integer.intValue() 称为自动拆箱

三、两者之间区别

  • int是基本类型,Integer是引用数据类型
  • int默认值是0,Integer默认是null
  • int类型直接存储数值,Integer需要实例化对象,指向对象的地址。

最后通过一个示例,帮助检测自己是否记住了

    public class IntTest {      public static void main(String[] args) {          int a = 1;          int b = 1;            Integer c = new Integer(1);          Integer d = new Integer(1);            Integer e = 1;          Integer f = 1;            Integer g = 130;          Integer h = 130;            Integer i = new Integer(130);          int j = 130;            System.out.println(a == b);          System.out.println(c == d);          System.out.println(c == a);          System.out.println(g == h);          System.out.println(i == j);      }  }  //执行结果如下  Connected to the target VM, address: '127.0.0.1:65049', transport: 'socket'  true  false  true  false  true

小结

  1. Java核心库提供的包装类型可以把基本类型包装为class;
  2. 自动装箱和自动拆箱都是在编译期完成的(JDK>=1.5);
  3. 装箱和拆箱会影响执行效率,且拆箱时可能发生NullPointerException;
  4. 包装类型的比较必须使用equals();
  5. 包装类型提供了大量实用方法;
  6. Integer会对-128~127的值进行缓存,具体查看jdk源码;
  7. 基本类型和引用类型进行比较时会有一个自动拆箱操作。