26-包装类

什么是包装类

  • 基本数据类型所对应的引用数据类型
  • Object可以统一所有数据,包装类的默认值是null

包装类对应

类型转换与装箱、拆箱

  • 栈里边的数据,拿到堆里边叫装箱(基本类型转成引用类型),反之叫拆箱
        //类型转换:装箱(基本类型转引用类型)
        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;
  • paraseXXX()静态方法:可以实现字符串和基本类型的转换
        //基本类型转换字符串
        int n1 = 100;
        //1.使用+号
        String s1 = n1 + "";
        //2.使用Integer中的toString()方法
        String s2 = Integer.toString(n1);
        System.out.println(s1);//100
        System.out.println(s2);//100

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

        //boolean字符串形式转成基本类型“true”--->true   非“true”--->false
        String str2 = "true";//若不是treu(非true)则转换后是false(false也是false)
        boolean b1 = Boolean.parseBoolean(str2);
        System.out.println(b1);//true
  • 注意:需保证类型兼容,否则抛出NumberFormatException异常

整数缓冲区

  • Java预先创建了256个常用的整数包装类型对象
  • 在实际应用当中,对已创建的对象进行复用
        //面试题
        Integer integer1 = new Integer(100);
        Integer integer2 = new Integer(100);
        System.out.println(integer1 == integer2);//false  引用类型,在堆里面,,地址不一样

        Integer integer3 = 100;//自动装箱:实际Integer.valueOf(100);
        Integer integer4 = 100;
        System.out.println(integer3 == integer4);//true

        Integer integer5 = 200;
        Integer integer6 = 200;
        System.out.println(integer5 == integer6);//false
        /*
        100在-128到127之内。所有返回的是Integer缓冲区里面的对象,所以地址一样
        200不-128到127之内,缓冲区里没有,只能new Integer 在堆里面开辟空间,所以地址不同
        实际上是-128到127之间的数都预先存放好了以供使用
        */
posted @ 2024-07-01 16:14  呆头尖瓜  阅读(1)  评论(0编辑  收藏  举报