1 包装类
在
Java
中,由于基本类型不是继承自
Object
,为了在泛型代码中可以支持基本类型,
Java
给每个基本类型都对应了 一个包装类型。
例如我们之前的基本数据类型和包装类。
1. 装箱和拆箱
![](https://i-blog.csdnimg.cn/direct/36b56f6d5170458ab2b48dde02ec3dab.png)
2.自动装箱和自动拆箱
![](https://i-blog.csdnimg.cn/direct/b4005304c88f4e8a9d54d3794d4945c4.png)
![](https://i-blog.csdnimg.cn/direct/00b1c9682eb947038616e3f407e3b1bb.png)
2.泛型
1.什么是泛型
一般的类和方法,只能使用具体的类型
:
要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的
代码,这种刻板的限制对代码的束缚就会很大。
-----
来源《
Java
编程思想》对泛型的介绍。
泛型是在
JDK1.5
引入的新的语法,通俗讲,泛型:
就是适用于许多许多类型
。从代码上讲,就是对类型实现了参数 化。
2.引出泛型
实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个 下标的值?
思路:
1.
我们以前学过的数组,只能存放指定类型的元素,例如:
int[] array = new int[10]; String[] strs = new String[10];
2.
所有类的父类,默认为
Object
类。数组是否可以创建为
Object?
![](https://i-blog.csdnimg.cn/direct/14e15f84172f46638edf0bdfd9983d09.png)
问题:以上代码实现后 发现
1.
任何类型数据都可以存放
2. 1
号下标本身就是字符串,但是确编译报错。必须进行强制类型转换
虽然在这种情况下,当前数组任何数据都可以存放,但是,更多情况下,我们还是希望他只能够持有一种数据类 型。而不是同时持有这么多类型。所以,泛型的主要目的:就是指定当前的容器,要持有什么类型的对象。让编译
器去做检查。
此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型。
语法如下
![](https://i-blog.csdnimg.cn/direct/2972ba0988d84b6ab478a5bdbfec5810.png)
![](https://i-blog.csdnimg.cn/direct/a20b6fcb2f6a405eab782c55662872a4.png)
注意:
1.Java的泛型不能是基本类型。这是因为泛型在Java中是通过类型擦除来实现的,类型擦除会将泛型类型擦除为其上界或
Object
类型。而基本类型(如
int
、
double
、
char
等)在Java中不是对象,它们是通过值传递的,没有对应的对象类型,因此不能作为泛型参数。
2.不能new泛型类型的数组
![](https://i-blog.csdnimg.cn/direct/df4cc904de3e4fdca40d6c225229c899.png)
3.泛型的上界
在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束
可以进一步限制必须继承某个类才能传入。
4.泛型方法
当你调用的时候,没有自动限定会自动类型推导,如果限定了就按限定的算。