java中List接口以及泛型和包装类的简单介绍
一、泛型的简单介绍
class MyArrayList 代表当前这个类是一个泛型类,此时的这个T就是一个占位符而已
class MyArrayList <T>{
public T[] elem;
public int uesdSize;
public void add(T val) {
this.elem[uesdSize] = val;
uesdSize++;
}
public T get(int pos){
return this.elem[pos];
}
}
public static void main(String[] args) {
MyArrayList<String> myArrayList1 = new MyArrayList<>();//这里可以传String类型的数据
MyArrayList<Integer> myArrayList2 = new MyArrayList<>();//这里可以传Integer类型的数据
MyArrayList<Boolean> myArrayList3 = new MyArrayList<>();//这里可以传Boolean类型的数据
}
泛型的意义:
1、自动进行数据类型检测
2、自动进行强制类型转换
面试问题:
1、泛型是怎么编译的?
泛型是编译时期的一种机制,擦除机制,擦成Object类型
我们在底层看一下:
泛型总结:
- 泛型是为了解决某些容器、算法等代码的通用性而引入,并且能在编译期间做类型检查。
- 泛型利用的是 Object 是所有类的祖先类,并且父类的引用可以指向子类对象的特定而工作。
- 泛型是一种编译期间的机制,即 MyArrayList 和 MyArrayList 在运行期间是一个类型。
- 泛型是 java 中的一种合法语法,标志就是尖括号 <>
二、包装类
关于Object[ ]强制类型转换;
https://www.jianshu.com/p/9783e29d7c20
2.1、包装类
java 引入了一类特殊的类,即这 8 种基本数据类型的包装类,在使用过程中,会将类似 int 这样的值包装到一个对象中去,java中所有数据都是对象,当一个基本数据类型也可是是对象,这也是包装类的作用。
特别注意char 和 int
2.2、装箱和拆箱
装箱(装包):就是把简单类型的数据 转换成 包装类类型数据的过程
拆箱(拆包):就是把包装类类型数据 转换成 简单类型的数据的过程
public static void main(String[] args) {
Integer a = 123;//装箱,这里就是将简单的123转换成Integer(包装类)
int b = a;
}
我们看一下底层是怎样做的:
重点:阿里面试题