包装类

我们知道,基本数据类型有八种,每种类型都有自己的一些特点,由于我们使用这些基本数据类型非常多,所以把他们各自的特点封装成方法来使用,是很有必要的,这些方法被包装到每个数据类型对应的类,以方便调用这些方法,这些类叫包装类(wrapper class),每个基本数据类型对应的包装类如下

 

包装类相应的继承结构如下:

 

 

★包装类和基本数据类型的转换(装箱和拆箱)

 

下面以Integer和Int为例

 

JDK5之前(不包括JDK5),需要程序员自己手动装箱和拆箱,代码如下

 

  //手动装箱,基本数据类型变包装类,两个方式
        int a = 1;
        Integer integer = new Integer(a);
        Integer integer1 = Integer.valueOf(a);

        //手动拆箱,包装类变基本数据类型
        int b = integer.intValue();//把a的值返回,赋值给b
       

 

JDK5以及JDK5之后,就不再需要程序员手动装箱和拆箱了,我们只需要像下面这样做

//自动装箱
        int a = 1;
        Integer integer = a;//通过调试会看到其实底层还是调用了Integer的valueOf方法

        //自动拆箱
        int b = integer;////通过调试会看到其实底层还是调用了Integer的intValue方法

我们虽然形式看上去是写了错误的类型转换语法,但通过调试可以知道,其实还是调用了valueOf和intValue方法,编译器是做了优化的。

 注意:

①如果将基本数据类型和包装类进行==,那么是判断基本数据类型的值是否相等

  Integer integer = 128;
        int a = 128;
        System.out.println(a == integer);
//可以看到,即使包装类对象的值是指向一个对象也没事,因为是和基本数据类型比较,所以只比数值 运行结果
true

 

 

包装类和String的转换

  //包装类---->String
        Integer a = 1;
        //方式1,这个方式是把字符串"a的值"存到一个新对象,然后地址给str,a本身的值不变
        String str = a + " ";

        //方式2
        str = a.toString();

        //方式3
        str = String.valueOf(a);


        //String---->包装类
        str = "123";
        //方式1
        a = new Integer(str);

        //方式2
        a = Integer.parseInt(str);

        //方式3
        a = Integer.valueOf(str);

 

posted @ 2022-03-14 08:01  codemelo  阅读(41)  评论(0)    收藏  举报