自动装箱(boxing)和自动拆箱(unboxing)

时间:2023-03-09 15:38:35
自动装箱(boxing)和自动拆箱(unboxing)

摘自:http://www.codeceo.com/article/java-boxing-unboxing.html

Java的四类八种基本数据类型

基本类型 占用空间(Byte) 表示范围 包装器类型

boolean

1/8

true|false

Boolean

char

2

-128~127

Character

byte

1

-128~127

Byte

short

2

-2ˆ15~2ˆ15-1

Short

int

4

-2ˆ31~2ˆ31-1

Integer

long

8

-2ˆ63~2ˆ63-1

Long

float

4

-3.403E38~3.403E38

Float

double

8

-1.798E308~1.798E308

Double

自动装箱 代码清单1

 public void boxingTest() {

 Integer i1 = 17;
Integer i2 = 17; Integer i3 = 137;
Integer i4 = 137;
// true 是两个基本类型的比较
System.out.println(i1 == i2);
// false 是两个对象的比较 i3.equals(i4)返回的是true 自动拆箱
// Integer对象自动缓存int值范围在low~high(-128~127),如果超出这个范围则会自动装箱为包装类。
System.out.println(i3 == i4);
}

自动拆箱 代码清单2

 public void unboxingTest() {
Integer i1 = 17;
int i2 = 17; int i3 = 137;
Integer i4 = 137;
// true
System.out.println(i1 == i2);
// true i4会调用Integer.intValue方法自动拆箱包装器类型为基本数据类型。
System.out.println(i3 == i4); }