初始泛型【超级详细哦~】

1、包装类

1.1 基本数据类型和对应的包装类

在这里插入图片描述

1.2 装箱和拆箱

        int i=10;
        //装箱操作,新建一个Integer类型对象,手动将i的值放入对象的某个属性中
        Integer ii=Integer.valueOf(i);

        //拆箱操作,将Integer对象中的值取出,放到一个基础类型中
        int j=ii.intValue();

1.3 自动装箱和拆箱

       //自动装箱
        Integer i1=10;
        //自动拆箱
        int i2=i1;

2、泛型

2.1 什么是泛型

泛型:就是适用于许多许多类型。
使用泛型可以通过自动装箱储存Integer等对象,
不仅能储存基本类型,还能储存复杂对象,这样为程序提供了更大的通用性。

使用泛型较数组的好处

  • int[ ]… : 之前我们就学过数组,只能创建静态数组,只提供基本的访问和遍历操作。你需要手动输入更多复杂的操作,如增删查改。
  • List< Integer >… :使用泛型时,不仅可以创建动态数组,装箱后还提供了很多复杂的操作,如:List的增删查改方法。

2.2 泛型的语法

class 泛型类名称 <类型形参列表>{
    
    
       //这里可以使用类型参数
}

下面举一个简单的例子:

class demo<T>{
    
    
    public Object[] arr=new Object[10];
    //所有类的父类是Object
}

2.3泛型的使用

在这里插入图片描述

如果上述案例我不想使用(T)强制性转化应该如何书写代码?

在这里插入图片描述

在这里插入图片描述

2.4 泛型的上界

在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束。

2.4.1 语法

class 泛型类名称<类型形参 extend 类型边界>{
    
    
}

2.4.2 示例

在这里插入图片描述
关于泛型的内容已经叙述完毕,该文章使用过的代码我放下面了,有需要的可以选择查看~

class demo<T>{
    
    
    public Object[] arr=new Object[10];

    public T getArr(int pos) {
    
    
        return (T)arr[pos];
    }

    public void setArr(int pos,T val) {
    
    
        this.arr[pos] = val;
    }
}
class demo0<E extends Number>{
    
    
    public Object[] arr=new Object[10];

    public E getArr(int pos) {
    
    
        return (E)arr[pos];
    }

    public void setArr(int pos,E val) {
    
    
        this.arr[pos] = val;
    }
}
public class Main {
    
    
    public static<E> void main(String[] args) {
    
    
        demo0<Integer> arr=new demo0<>();
        //demo0<String> arr1=new demo0<String>();
    }
    public static<T> void main5(String[] args) {
    
    
        demo<String> arr=new demo<>();
        arr.setArr(0,"哈哈哈哈");
        System.out.println(arr.getArr(0));
    }

    public static <T> void main4(String[] args) {
    
    
        demo<Integer> arr=new demo<>();
        arr.setArr(0, 100 );
        System.out.println(arr.getArr(0));
    }
    public static void main3(String[] args) {
    
    
        int[] arr1={
    
    1,2,3,4,5,6};
        char[] arr2={
    
    'a','b','c','d','e'};
    }
    public static void main2(String[] args) {
    
    
        //自动装箱
        Integer i1=10;
        //自动拆箱
        int i2=i1;
        System.out.println(i1);
        System.out.println(i2);
    }
    public static void main1(String[] args) {
    
    
        int i=10;
        //装箱操作,新建一个Integer类型对象,手动将i的值放入对象的某个属性中
        Integer ii=Integer.valueOf(i);

        //拆箱操作,将Integer对象中的值取出,放到一个基础类型中
        int j=ii.intValue();

        System.out.println(i);
        System.out.println(ii);
        System.out.println(j);
    }
}

猜你喜欢

转载自blog.csdn.net/2401_82641862/article/details/142398001