天天看点

Java常用类(3)- 包装类

包装类概述

什么是包装类

  • 基本数据类型所对应的引用类型
  • Object可统一所有数据,包装类的默认值是null
Java常用类(3)- 包装类

装箱和拆箱

  • 基本类型转换为引用类型为装箱
  • 引用类型转换为基本类型为拆箱
package commonclass.packingclass;

public class Demo01 {
    public static void main(String[] args) {
        //类型转换:装箱,基本类型转成引用类型的过程
        int age = 18;
        //int使用Integer类创建对象
        //方式一:
        Integer integer = new Integer(age);
        //方式二:
        Integer integer1 = Integer.valueOf(age);

        //类型转换:拆箱,引用类型转换成基本类型
        Integer integer2 = new Integer(100);
        int age1 = integer2.intValue();

        //👆jdk1.5之前,了解
        //👇jdk1.5之后,提供自动拆箱装箱
        int num = 30;
        //自动装箱,把基本类型赋给引用类型
        Integer integer3 = num;
        //自动拆箱,把引用类型赋给基本类型
        int num1 = integer3;
    }
}      

基本类型和字符串转换

8种包装类提供不同的类型间转换方式:

  • Number父类中提供的6个共性方法
Java常用类(3)- 包装类
  • parseXXX()静态方法
  • valueOf()静态方法,把基本类型转换为引用类型
package commonclass.packingclass;

public class Demo01 {
    public static void main(String[] args) {
        //基本类型和字符串之间转换

        //1 基本类型转成字符串
        int n1 = 100;
        //1.1 使用+号
        String s1 = n1 + "aa";
        System.out.println(s1);
        //1.2 之后使用Integer中的toString()方法
        String s2 = Integer.toString(n1);
        System.out.println(s2);

        //2 字符串转换为基本类型
        String str = "150";
        int n2 = Integer.parseInt(str);
        System.out.println(str);

        //3 补充:boolean字符串形式转换成基本类型。“true”---->true  非“true”---->false
        String str2 = "true";
        boolean b1 = Boolean.parseBoolean(str2);
        System.out.println(b1);
        String str3 = "qwert";
        boolean b2 = Boolean.parseBoolean(str3);
        System.out.println(b2);
    }
}      
Java常用类(3)- 包装类
Java常用类(3)- 包装类
Java常用类(3)- 包装类

整数/Integer缓冲区

  • Java预先创建了256个常用的整数包装类型对象
package commonclass.packingclass;

public class Demo02 {
    public static void main(String[] args) {
        //面试题
        Integer integer = new Integer(100);
        Integer integer1 = new Integer(100);
        System.out.println(integer==integer1);
        //false     :比较的是栈中的地址;调用的是构造方法


        Integer integer2 = 100;//自动装箱
        Integer integer3 = 100;
        System.out.println(integer2==integer3);
        //true      :将基本类型赋给引用类型,自动装箱;栈中的integer访问的都是堆中的100;调用的是valueOf()方法存放在堆中的缓冲区
        /*👇过程
        Integer integer2 = 100----->Integer integer2 = Integer.valueOf(100)
        Integer integer3 = 100----->Integer integer3 = Integer.valueOf(100)
         */

        Integer integer4 = 200;//自动装箱
        Integer integer5 = 200;
        System.out.println(integer4==integer5);
        //false     :valueOf的范围是-128到127,不在范围之内的会重新new一个,因此比较的是栈中的地址
    }
}      
Java常用类(3)- 包装类
Java常用类(3)- 包装类

继续阅读