『JavaSE』泛型和包装类

本篇博客主要介绍Java泛型相关的知识和包装类的相关知识的简单认识。

泛型


  • Java中的泛型和C++的泛型大概是相似的;
  • Java泛型参数只可以代表类,不能代表个别对象
  • Java编译器在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快
  • 泛型是作用在编译期间的一种机制,即运行期间没有泛型概念

泛型的简单使用


Java的集合类就是泛型的一个产物,我们通过演示一些简单集合类的用法,来理解一下泛型:

  • 使用ArrayList存放int类型元素
    在这里插入图片描述
    在这里插入图片描述
  • 使用ArrayList存放double类型元素
    在这里插入图片描述
    在这里插入图片描述
  • 使用ArrayList存放String类型元素
    在这里插入图片描述
    在这里插入图片描述

包装类


通过前面的了解,我们知道Java中的泛型参数只能是类,而我们又知道Java中有八种基本数据类型这八种基本数据类型并不是类,显然是不能作为泛型参数的。我们来看一下:
在这里插入图片描述
在这里插入图片描述
为了解决上述泛型参数问题,Java中引入了包装类

八种基本类型和其包装类之间的对应关系如下:

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

装箱(boxing)和拆箱(unboxing)


名词很高大上,其实操作很简单,我们来简单使用一下就知道了。

  • 装箱(boxing)
    在这里插入图片描述
    在这里插入图片描述
  • 拆箱(unboxing)
    在这里插入图片描述
    在这里插入图片描述

自动装箱(autoboxing)和自动拆箱(autounboxing)


前面我们可以看到装箱和拆箱虽然不是很复杂,但是还是需要手动操作,这显然是很麻烦的,于是Java提供了自动装箱和自动拆箱。顾名思义,自动装箱和自动拆箱就是编译器来完成装箱和拆箱操作,不需要程序猿来手动完成

  • 自动装箱(autoboxing)
    在这里插入图片描述
    在这里插入图片描述
  • 自动拆箱(autounboxing)
    在这里插入图片描述
    在这里插入图片描述

我们使用javap反编译工具来看一下自动装箱和自动拆箱的过程

  • 自动装箱
    在这里插入图片描述
    在这里插入图片描述
  • 自动拆箱
    在这里插入图片描述
    在这里插入图片描述

我们再来看一个应用场景,可以使用包装类来处理
假如现在我们写一个函数来获取指定下标的元素,返回值类型为int,首先,我们需要在函数中判断传入的下标是否合法如果不合法,我们该如何处理呢

  • 我们可以使用Java中的异常机制来处理,如果下标不合法,则抛出异常
  • 我们也可以使用包装类来处理返回值类型改为Integer,如果下标不合法,返回值为null
    在这里插入图片描述

注意:包装类是不可变对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值