Java Wrapper
一、包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
二、自动装箱与拆箱
以int
和Integer
为例:
//自动装箱,将int转换为Interger
Integer integer = 1;
//自动拆箱,将Integer转换为int
int n = integer;
其它的包装类类似,自动装箱调用valueOf()
方法,自动拆箱调用xxxValue()
方法
当自动装箱时传入的值在缓范围之中则直接拿缓存中的使用,否则才新建对象
包装类 | 缓存范围 |
---|---|
Byte | -128~127 |
Short | -128~127 |
Integer | -128~127 |
Long | -128~127 |
Float | 没有缓存,直接新建 |
Double | 没有缓存,直接新建 |
Character | \u0000 ~ \u007F(0 ~ 127) |
Boolean | TRUE、FALSE |
测试:
@Test
public void test1(){
Integer integer1 = -128;
Integer integer2 = -128;
System.out.println(integer1 == integer2); //true
Integer integer3 = 127;
Integer integer4 = 127;
System.out.println(integer3 == integer4); //true
Integer integer5 = -129;
Integer integer6 = -129;
System.out.println(integer5 == integer6); //false
Integer integer7 = 128;
Integer integer8 = 128;
System.out.println(integer7 == integer8); //false
Integer integer9 = new Integer(127);
Integer integer10 = new Integer(127);
System.out.println(integer3 == integer9); //false
System.out.println(integer9 == integer10); //false
System.out.println("---------------------------------");
//只要等号的一方为基本数据类型,就是比较两者的值
int i1 = -128;
Integer integer11 = new Integer(-128);
System.out.println(i1 == integer1); //true
System.out.println(i1 == integer11); //true
int i2 = 127;
System.out.println(i2 == integer3); //true
System.out.println(i2 == integer9); //true
}