目录
一:包装类
1.什么是包装类
2.装箱和拆箱
3.一个经典面试题
二:泛型
1.什么是泛型
2.语法
3.使用
4.泛型是如何编译的
5.泛型的上界
一:包装类
1.什么是包装类
(1)概念:在Java中,由于基本类型不是继承自Object。为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个类
(2)基本数据类型分别对应的包装类
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2.装箱和拆箱
(1)装箱:把一个基本数据类型转化为包装类型的过程
(2)拆箱:把一个包装类型转化为结拜呢数据类型的过程
(3)自动装箱和显示装箱
(4)自动拆箱和显示拆箱
3.一个经典面试题
(1)每个包装类对象都封装了基本类型的一个值,在-128到127之间会缓存起来,比较的是缓存起来的值,在此之外的范围,是比较的对象(因为会new新的出来)
(2)在包装类中推荐用equals来比较值的大小;如果使用“==”比较时是不同的(对于基本类型来说,比较的是值;而对于引用数据类型来说,比较的是对象的内存地址)
二:泛型
1.什么是泛型
(1)简单来说,就是适用于许多类型;代码方面来说,就是对类型实现参数化
(2)泛型目的:就是指定当前容器,需要持有什么类型的对象,让编译器去做检查,这时,就可以把类型进行参数传递,需要什么类型,就传什么类型
2.语法
(1)定义一个泛型类
class 泛型类名 <类型参数列表 [extends 继承类]>{
//这里可以使用类型参数
}
(2)定义一个泛型引用
泛型类 <类型实参> 变量名;
(3)定义一个泛型对象
new 泛型类 <类型实参> {构造方法实参}};
(4)定义一个泛型方法
方法限定符 <类型参数列表 > 返回值类型 方法名称<形参列表>{
}
3.使用
(1)不能实例化一个泛型数组
(2)<T>代表当前类是一个泛型类
(3)泛型优点:数据类型参数化,编译是自动进行类型检查和转化
4.泛型是如何编译的
擦除机制:在编译时,将所有的T擦除为Object.
5.泛型的上界
(1)语法:
class 泛型类名称 <类型参数 extends 类型边界>{
}
(2)例子:
E是number或者number的子类。
String 不是number的子类型所以报错