Java基础--int与Integer区别
下面就这两个问题进行一下总结复习。
一、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源码;
- 基本类型和引用类型进行比较时会有一个自动拆箱操作。