Java中基本类型与包装器类型的区别
基本类型 | 包装器类型 |
---|---|
byet(默认值:0) | Byte |
short(默认值:0) | Short |
int(默认值:0) | Integer |
long(默认值:0L) | Long |
float(默认值:0.0f) | Float |
double(默认值:0.0d) | Double |
char(默认值:‘u0000’) | Character |
boolean(默认值:false) | Boolean |
为什么要有包装器类型?
为了让基本类型也具有对象的特征,就出现了包装器类型(如我们在使用集合类型Collection时就一定要使 用包装类型而非基本类型)因为容器都是装object的,这就需要使用这些基本类型的包装器类了。
包装器类型使用的小案例如下:
自动装箱: new Integer(5); ,底层调用: Integer.valueOf(5)
自动拆箱: int i = new Integer(5); ,底层调用i.intValue(); 方法实现
Integer i = 5;
Integer j = 5;
System.out.println(i==j);//true
答案在源码中:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high){
return IntegerCache.cache[i + (-IntegerCache.low)];
}
return new Integer(i);
}
二者区别:
区别 | 基本类型 | 包装器类型 |
---|---|---|
声明方式不同 | 不使用new关键字 | 使用new关键字来在堆中分配存储空间 |
存储方式及位置不同 | 直接将变量值存储在栈中 | 将对象放在堆中,然后 通过引用来使用 |
初始值不同 | 初始值如int为0,boolean为false | 初始值为null |
使用方式不同 | 直接赋值直接使用 | 在集合如Collection、Map时会使用 到 |