对象包装器(wrapper)

对象包装器(wrapper)

什么是对象包装器

  • 基本数据类型转换为对象的机制 使得其具有对象的特性

比如int 是一个基本数据类型 但是其不是对象 要想成为一个对象就要使用类型类型对象包装器

为什么要使用对象包装器

  • 使得基本的数据类型有对象的特性 可以调用对象的方法

比如要想声明一个整形数组列表 那么该列表中的数据类型应是整形
可是 列表不接受基本的数据类型 只能接受对象为参数
ArrayList<int> 有语法错误 而ArrayList<Integer>则没有问题
因为int是 基本数据类型 而Integer是包装器类(是一个对象)

  • 使用对象包装器可以使得代码更加灵活、方便、易读
  • 对象包装器提供了一些方便的方法,例如将字符串转换为基本数据类型,或者将基本数据类型转换为字符

既然基本类型通过类型包装器的操作之变成了对象 所以 也就从基本数据类型变成了引用数据类型

对象包装器中所提供的方法

  1. valueOf()方法:将字符串转换为对应的基本数据类型或对象包装器类型的值。

  2. parseInt()方法:将字符串转换为int类型的值。

  3. toString()方法:将对象转换为字符串。

  4. equals()方法:比较两个对象是否相等。

  5. compareTo()方法:比较两个对象的大小关系。

  6. intValue()方法:将对象转换为int类型的值。

  7. doubleValue()方法:将对象转换为double类型的值。

  8. booleanValue()方法:将对象转换为boolean类型的值。

基本数据类型及其包装类

基本数据类型包装类(引用型数据类型)
booleanBoolean
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble

大部分都是将其基本数据类型的 首字母大写 就是其对应的包装类
只有int 和char类型的包装类需要特别注意
Integer(整形) Character(字符)

  • 注意

转换成包装类之后 类型会发生转变 即 基本数据类型---->引用数据类型

包装器的特点

  • 包装器不可变

    构造好了包装器就不允许整个包装在其中的值

  • 包装器不能派生子类

    包装类是用final修饰的

包装器的继承关系

在这里插入图片描述

  • 包装类继承自超类Object 所以可以直接调用其方法 不用导入包

装箱和拆箱

装箱(boxing)

  • 把基本数据类型通过对象包装器转为包装类

    基本数据类型 int ----包装器—> Integer(包装类)

进行装箱操使得类型发生转换:基本数据类型------>引用数据类型

//装箱  基本数据类型转------>引用数据类型   int---->Integer
int num=10;//定义一个基本数据类型
Integer integer;//声明一个int对应的包类型 
integer=Integer.valueOf(num);//num转换成包类型(Integer) 并赋值给integer

拆箱

  • 把包装类转换为基本数据类型

    装箱的反向操作 Inerger(包装类)----拆箱–>int(基本数据类型)

同理,进行拆箱操作也会使得类型发生转换: 引用数据类型----->引用数据类型

//拆箱
// 引用数据类型------>基本数据类型   Integer---->int
//将字符串强转为整形 前提输入的是数字字符
Integer integer=10;//引用数据类型
int  num=integer.intValue();//将包装类转换成int类类型的值
  • 装箱和拆箱

在这里插入图片描述

代码示例

public class _Integer {
    public static void main(String[] args) {

        //可能发生转换失败的 问题 所以得进捕获
        try {
            //装箱
            // 基本数据类型转------>引用数据类型   int---->Integer
            int num=10;//基本数据类型
            Integer integer =Integer.valueOf(num);
            System.out.println("装箱后的值:"+integer);

            //拆箱
            // 引用数据类型------>基本数据类型   Integer---->int
            //将字符串强转为整形 前提输入的是数字字符
            Integer integer2=10;//基本数据类型
            int num2=integer2.intValue();
            System.out.println("拆箱之后的值:"+num2);


            //parseInt()将字符串转换成 int类型的值
            // 前提是字符串由数字组成
            String strNumber="123456";
            int Number=Integer.parseInt(strNumber);//将字符串强转为数字
            System.out.println("字符转换成整形数字:"+Number);

            //toString()将对象转换成字符串
            int number=123;
            String str1=Integer.toString(number);
            System.out.println("转换成字符串"+str1);
            //还可以转换成别的  intValue()  doubleValue() booleanValue()

            //equals() 比较两个对象的大小是否相等
            Integer a=1;
            Integer b=2;
            System.out.println("a和b是否相等?:"+a.equals(b));

            //compareTo()比较两个对象的大小
            Integer x=11;
            Integer y=2;
            System.out.println("比较x和y的大小"+x.compareTo(y));
            //x=y 返回0
            //x>y 返回1
            //x<y f返回-1
            
            
        } catch (NumberFormatException e) {

            System.out.println("发生异常"+e);
        }

    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值