Java基础--int与Integer区别


看过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. 基本类型和引用类型进行比较时会有一个自动拆箱操作。
原文地址:https://www.cnblogs.com/xieshuang/p/12186349.html