包裝類(Wrapper Class)
八個(gè)和基本數(shù)據(jù)類型對(duì)應(yīng)的類統(tǒng)稱為包裝類(Wrapper Class)
基本數(shù)據(jù)類型 | 包裝類 |
---|---|
byte | Byte |
boolean | Boolean |
short | Shrot |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
包裝類的緩存
包裝類 | 緩存范圍 |
---|---|
Integer | [-128, 127] |
Long | [-128, 127] |
Short | [-128, 127] |
Byte | [-128, 127] |
Character | [0, 127] |
Boolean | True,False |
具體可以查看對(duì)應(yīng)包裝類的valueOf代碼實(shí)現(xiàn)中捆。
// Integer valueOf代碼實(shí)現(xiàn)
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
因此會(huì)有如下現(xiàn)象:
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1 == i2); // true
System.out.println(i3 == i4); // false
代碼
Integer i = 10; // 裝箱使用Integer.valueOf()
int n = i; // 拆箱使用Integer.intValue()
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
Long l1 = 200L;
Long l2 = 300L;
// 包裝類的+、-秀仲、*哮笆、/都會(huì)先進(jìn)行拆箱后再進(jìn)行運(yùn)算菇曲。
Long l3 = i1 + l1; // 100 + 200L = 300L -> Long
System.out.println(l1.equals(i1 + i2)); // false i1 + i2 => Integer
System.out.println(l2.equals(i1 + l1)); // true i1 + l1 => Long
Integer i5 = 50 + 50;
System.out.println(i1 == (50 + 50)); // true
System.out.println(i1 == i5); // true