- 什么是包装类?
-
- 基本数据类型所对应的引用数据类型。
- 0bject可统一所有数据,包装类的默认值是null。
- 包装类对应
- 类型转换与装箱、拆箱
-
- 装箱是将基本类型转换成引用类型。
- 拆箱是将引用类型转换成基本类型。
public class Demo1{
int num = 10;
//装箱
int num1 = 18;
Integer integer1 = new Integer(num1);//法1
Integer integer2 = Integer.valueOf(num1);//法2
//拆箱
Integer integer3 = new Integer(100);
int num2 = integer3.intValue();
//Jdk1.5之前采用这个方法装箱与拆箱
//===================================
//Jdk1,5之后,提供自动装箱拆箱
int age = 30;
//自动装箱
Integer integer4 =age;
//自动拆箱
int age2 = integer4;
}
-
- 8种包装类提供不同的类型间的转换方式:
-
-
- Nunber父类种提供了6个共性方法(具体查看JavaAPI)。
- parseXXX()静态方法(xxx表示一种类型),可以实现基本类型和字符串之间的转换。
-
public class Demo1{
//基本类型转成字符串
int n = 100;
//使用+号
String s1 = n1+"";
//使用Integer中的toString()方法
String s2 = Integer.toString(n1);
System.out.println(s1);
System.out.pringln(s2);
}
public class Demo1{
//字符串转成基本类型
String str ="150";
int n2 = Integer.parseInt(str);//如果字符串转数字,字符串中就不能出现非数字字符
System.out.println(n2);
}
//boolean字符串形式转成基本类型,"true"----->true || "true" ----->false
//只要非true,就都是转成fasle
public class Demo1{
String str2 = "true";
boolean b1 = Boolean.parseBoolean(str2);
System.out.println(b1);
}
-
-
- valueOf()静态方法,可以把引用类型转换成基本类型。
-
注:需要保证类型兼容,否则抛出NumFormatException异常。
- 整数缓冲区(Integer):
-
- Java预先创建了256个常用的整数包装类型对象。
- 在实际应用当中,对已创建的对象进行复用,节省内存的消耗。
public class Demo2{
public static void main(String[] args){
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1 == integer2)//false
Integer integer3 = 100;//自动装箱
Integer integer4 = 100;
System.out.println(integer3 == integer4)//true
Integer integer5 = 200;//自动装箱
Integer integer6 = 200;
System.out.println(integer5 == integer6)//false
}
}
integ1与integer2都是引用类型,引用类型的数据存放于堆中,此时integer1==integer2比较的它们的地址。
自动装箱实际上调用了Integer.valueOf(100)方法,即Integer integer3 = Integer.valueIOf(100),integer3和integer4是引用堆空间中已经一块空间用于存放cache数组的数据(-127~128),所以结果为true;如果数据范围不在-127~128中,就会在堆中开辟一个空间,存放该数据,所以integer5==integer6,结果为false 。(查看Integer.valueOf的源码)