目录
泛型的定义
1.尖括号<>是泛型的标志
2.E是类型变量(Type variable),变量名要大写
3.E是定义时是形参,代表的意思是MyArrayList最终传入的类型,但目前还不知道
泛型的分类
- 泛型类
- 泛型方法
泛型背后作用时期和背后的简单原理
1.泛型是作用在编译期的一种机制,运行期间没有泛型的概念
2.泛型代码在运行期间,就是我们上面提到的,利用objec达到效果。
泛型的意义
1.自动对类型进行检测。
2.自动对类型进行强制类型转换。
3.泛型类型尖括号的内容不参与类型的组成。
注:1.尖括号里的内容必须是类类型(integer.charater)
2.泛型不能被实列化
泛型的面试题
1.泛型是编译时期机制的一种机制,运用擦除机制。如果尖括号是E则擦成object。
泛型尖括号中的内容不参与类型的组成。
打印结果
泛型的总结
1.泛型是为了解决某些容器、算法等代码的通用性而引入的,并且能在编译期间做类型的检查,如果使用object类,当传入了非法参数时,编译器是不会报错的。
2.泛型利用的是object是所有类的祖先类,并且父类的引用可以指向子类对象的特定而工作。
3泛型是一种编译时期的机制,即MyArrayList<Person>和《MyArrayList<Book>在运行期间是一个 类型。
4 泛型的标志就是尖括号<>
包装类
问题:object引用可以指向任意类型的对象,但也有例外,8中基本数据类型不是对象,那岂不是
刚才的泛型机制失效了
答:实际上确实如此,为了解决这个问题,java引入了包装类,在使用过程中,会将int这样的值包装到一个对象中去
基本数据类型和包装类直接的对应关系
注:包装类是在基本数据类型的首字母上大写,除了Integer和character
包装类的使用,装箱和拆箱
装箱(装包);把简单类型变为包装类类型
拆箱(拆包):把包装类类型变为简单数据类型的数据。
可以看出在使用过程中,装箱和拆箱带来了不少代码量,所以为了减少开发者的负担,java提供了自动机制
注意:自动装箱和自动拆箱是工作在编译期间的一种机制
List的使用
List线性表常用方法
运行结果
扑克牌的制作