Java基础–int与Integer区别
- 2020 年 2 月 13 日
- 筆記
看过java相关入门开发的书籍的应该都知道,这个标题其实涉及到两个问题:
- java基本数据类型和引用类型
自动拆箱
和自动装箱
下面就这两个问题进行一下总结复习。
一、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
小结
- Java核心库提供的包装类型可以把基本类型包装为class;
- 自动装箱和自动拆箱都是在编译期完成的(JDK>=1.5);
- 装箱和拆箱会影响执行效率,且拆箱时可能发生NullPointerException;
- 包装类型的比较必须使用equals();
- 包装类型提供了大量实用方法;
- Integer会对-128~127的值进行缓存,具体查看jdk源码;
- 基本类型和引用类型进行比较时会有一个自动拆箱操作。