包装类
一、什么是包装类?
-
基类数据类型所对应的引用数据类型。(基本类型本身是没有属性和方法的)
- 基本类型一般都是存储在栈里面
- 引用类型数据都是存储在堆里面,栈里面存的是引用类型的一个地址。
-
Object 可统一接收所有数据,包装类的默认值是null。
-
包装类对应的基本类型:
基本数据类型 包装类型 byte Byte short Short int Integer long Long float Float double Double boolean Boolean char Character
二、类型转换与装箱、拆箱
-
装箱:基本类型转换成引用类型(栈里面的数据拿到堆里面)
-
拆箱:引用类型转换成基本类型(堆里面的数据拿到栈里面)
装箱和拆箱:
public static void main(String[] args) { //类型转换:装箱,基本类型转换成引用类型 //基本类型 int num1 = 18; //使用Integer类创建对象 Integer integer1 = new Integer(num1); //有删除线,过时的方法 Integer integer2 = Integer.valueOf(num1);//新的方法 //类型转换:拆箱,引用类型转成基本类型 Integer integer3 = new Integer(100); int num2 = integer3.intValue(); //JDK1.5之后提供了自动装箱和拆箱 int age = 30; //自动装箱 Integer integer4 = age; //自动拆箱 int age2 = integer4; }
三、8种包装类提供不同类型间的转换方式
-
Number
父类中提供的6个共性方法。 -
parseXXX()
静态方法。 -
valueOF()
静态方法。基本数据类型和字符串之间的转换:
public static void main(String[] args) { //基本类型和字符串之间转换 //1.基本类型转成字符串 int n1 = 255; //1.1 使用+号 String s1 = n1+""; //1.2使用Integer中的toString()方法 String s2 = Integer.toString(n1, 16);//使用16进制,将n1转换成字符串 System.out.println(s1); System.out.println(s2); //2字符串转成基本类型 String str = "150"; //使用Integer.parseXXX(); int n2 = Integer.parseInt(str);//字符串不能出现非数字的字符 System.out.println(n2); //boolean的字符串形式转换成基本类型,"true"--->true,只要不是"true"就会转换成false String str2 = "tru"; boolean b1 = Boolean.parseBoolean(str2); System.out.println(b1); }
-
注意:需要保证类型兼容,否则抛出NumberFormatException异常。
四、Integer缓冲区
-
Java预先创建了256个常用的整数包装类型对象,在实际应用中,可以对已创建的对象进行复用。
public static void main(String[] args) { //面试题 Integer integer1 = new Integer(100); Integer integer2 = new Integer(100); System.out.println(integer1 == integer2);//false Integer integer3 = Integer.valueOf(100); Integer integer4 = Integer.valueOf(100); System.out.println(integer3==integer4);//true,因为100是在-128和127之间的256个常用的整数包装类型对象 Integer integer5 = Integer.valueOf(200); Integer integer6 = Integer.valueOf(200); System.out.println(integer5==integer6);//false,因为不在256个常用的整数包装类型对象范围 }