1、为什么是八种:

    包装类对应基本数据类型,因为基本数据类型有八种,所以包装类也有八种。

2、包装类的作用:

    把基本数据类型包装一下,让它变成对象。基本数据类型不是对象,不能调用方法,不能多态,例如,想要创建一个包含布尔,整数,浮点数的数组,基本数据类型是无法做到的,所以有了包装类,也符合java中一切皆对象的原则。

    从基本数据类型到包装类除了int的包装类是Integer、char的包装类是Character之外,其他包装类都是将基本数据类型首字母大写,如boolean-->Boolean。

3、实例测试

    使用main方法测试十分不方便,我们想要让所有的测试都运行或者只运行某一个测试,所以引用单元测试@Test。

    单元测试方法的要求:类必须是公共的,不能有任何构造器。

                                        方法必须是公共非静态无返回值无参数

    执行过程:在方法名上右击,点击run as -- junit 

//使用单元测试
    @Test
    public void test1(){
        System.out.println("test1...");
    }

    @Test
    public void test2(){
        System.out.println("test2...");
    }

    包装类:把基本数据类型包装成对象

                byte                        Byte

                short                       Short

                int                           Integer

                long                        Long

                float                        Float

                double                    Double

                boolean                  Boolean

                char                        Character

装箱与拆箱

    打通基本数据类型与包装类之间的桥梁。

public void test1(){
        int n = 100;
        //把基本型包装成对象
        Integer obj1 = new Integer(n); //这个过程称为手工装箱
        Integer obj2 = 200;             //自动装箱,编译器行为 : Integer obj2 = Integer.valueOf(200);
                                        //                 或者  Integer obj2 = new Integer(200);
        System.out.println(obj1);
        System.out.println(obj2);

        //把包装类对象中的基本值取出来,拆箱
        int v1 = obj1.intValue();   //手工拆箱
        int v2 = obj2;              //自动拆箱,编译器行为 : int v2 = obj2.intValue();

        int v3 = obj1 * obj2;
        System.out.println(v3);

        //把字符串变成整数
        int v4 = Integer.parseInt("345"); //工具方法,静态方法
        System.out.println(v4);
    }

练习:


声明两个字符串,内容是整数 第一个字符串转换成整数,再手工装箱 把第二个字符串直接变成包装类对象 手工拆箱求和,自动拆箱求商


@Test
    public void test2(){
        //声明两个字符串,内容是整数
        String s1 = "123";
        String s2 = "3";
        //第一个字符串转换成整数,再手工装箱
        int i1 = Integer.parseInt(s1);
        Integer obj1 = new Integer(s1);
        //把第二个字符串直接变成包装类对象
        Integer obj2 = Integer.parseInt(s2);
        //手工拆箱求和,自动拆箱求商
        int v1 = obj1.intValue();
        int v2 = obj2.intValue();
        int sum = v1 + v2;
        System.out.println("sum:" + sum);

        int shang = obj1 / obj2;
        System.out.println("shang:" + shang);
    }

注意:

    自动装箱过程中(效率高),系统会有一个-128 到 127 大小的缓冲区,当创建对象过程中,程序优先从缓冲对象数组中取,超出此区域,会直接new();

        自动装箱:Integer.valueOf(1);

@Test
    public void test3(){
        Integer i = 23;
        Integer j = 23;
        System.out.println(i == j);

        Integer ii = -129;
        Integer jj = -129;
        System.out.println(ii == jj);
    }