Java 之 泛型 与 包装类

Java 之 泛型 与 包装类

泛型

泛型是作用在编译期间的一种机制,即运行期间没有泛型的概念。

定义泛型类时,"<>"内一般给 T 或者 E

泛型代码示例:

class MyArrayList{
    public Object[] elem;
    public int useSize;

    public MyArrayList() {
        this.elem = new Object[10];
        this.useSize = 0;
    }
    public void add(Object data){
        this.elem[this.useSize] = data;
        this.useSize++;
    }
    public Object getPos(int pos){
        return this.elem[pos];
    }
}

public class TestDemo2 {
    public static void main(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        myArrayList.add(1);
        myArrayList.add(2);
        myArrayList.add("改变");
        int a = (int)myArrayList.getPos(0);

    }
}

若创建了顺序表中的元素为Object类型,可放入任意类型的数据,因为Object是java中所有类的祖先类。
但要想用int或其他数据类型接收时,需要强制类型转换

< T >, T 为占位符,表示当前类是泛型类

  • 泛型类不能new 一个泛型类型的数组

泛型的意义:
1.自动进行类型的检查 (注意:并不是进行类型的替换,只是用所给类型进行检查,并未替换)
2.自动进行类型的强制类型转换


泛型到底是怎么编译的?

擦除机制-》擦除成->Object,并不是替换成Object,泛型并不参与类型的组成


  • 在使用泛型类时一定要加 <>,指定类型
MyArrayList2 <String> myArrayList2 = new MyArrayList2;

"<>"并不参与类型的组成,myArrayList2的类型是MyArrayList2

  • 泛型类型数组不能new
  • 简单类型不能作为泛型的参数,需要其对应的包装类

包装类

基本数据类型与其对应的包装类:
在这里插入图片描述

装箱

装箱/装包:将简单类型变为对应的包装类
自动装箱的实现:调用的是Integer.valueOf()方法
自动装箱示例:

int a = 10;
Integer i = 10;

手动装箱示例:

  int a = 10;
  Integer i = Integer.valueOf(a);//手动装箱
拆箱

拆箱/拆包:将包装类变为对应的简单类型
自动拆箱的实现:调用 intValue()
自动拆箱示例:

  Integer i = 10;
  int a = i;

手动拆箱示例:

  Integer integer = new Integer(a);//手动拆箱
 int n = integer.intValue();
  • 在装箱时,将 int类型 -128到127之间的数已经存到数组中;若int类型装箱的数据不在该范围内,则new了一个对象返回。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值