包装类 wrapper
包装类–针对八种基本数据类习性相应的引用类型
装箱和拆箱
- 装箱: 基本类型->包装类型;拆箱:包装类型 ->基本类型
- jdk5以前手动装箱和拆箱,jdk5以后自动装箱和拆箱
// 手动装箱
int n1 = 100;
Integer integer = Integer.valueOf(n1);
// 手动拆箱
int i = integer.intValue();
// 自动装箱
int n2 = 100;
Integer integer2 = n2; //底层仍使用的是 new Integer.valueOf
// 自动拆箱
int n3 = integer2; //底层仍使用的是 intValue方法
注意
Object obj1 = true? new Integer(1):new Double(2.0)
System.out.println(obj1); // 输出1.0,三元运算符是一个整体!!!!
包装类和String的转换
包装类(integer)-> String
Integer i = 100;
String str1 = i + "";
String str2 = i.toString();
String str3 = String.valueOf(str2);
String -> 包装类(integer)
String str1 = "1234";
Integer i1 = Integer.paeseInt(str1);
// 自动装箱Integer i2 = new Integer(str1);
//构造器Integer i3 = Integer.valueOf(str1);
Integer 常见题
public void method(){
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i==j) // false new的是两个不同对象
Integer m = 1;
Integer n= 1;
System.out.println(m==n) // true 源码:在-128和127之间是直接返回类加载时已经创建好的对象,是同一个对象
Integer m = 128;
Integer n= 128;
System.out.println(m==n) // false 源码:不在范围内是new对象
Integer x1 = 128;
int y1 = 128;
System.out.println(x1==y1) // true 因为有int基本类型在,判断的是值相等,而不是对象地址
}