边学边记——Java中的泛型(包含包装类的使用和类型转换问题的讲解)

目录

一.定义

二.目的

三.语法

1.类

(1).定义

 (2).泛型类的使用

2.方法

三.注意

1.泛型Object类

2.作用范围

3.有关于包装类的使用(装箱和拆箱)

包装类和基本数据类型的转换——通过拆箱和装箱实现

四.有关类型转换的例题

eg1

eg2


一.定义

        一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。----- 来源《Java编程思想》对泛型的介绍。
        泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。

二.目的

        泛型的主要目的:就是指定当前的容器,要持有什么类型的对象。让编译器去做检查。此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型。

三.语法

<...> 闭合的尖括号 —— Java中泛型的特征。

泛型可以是类,也可以是方法。

1.类

(1).定义

a.直接定义

class 泛型类名称<类型形参列表> {
// 这里可以使用类型参数
}
class ClassName<T1, T2, ..., Tn> {
}

 b.继承

class 泛型类名称<类型形参列表> extends 继承类/* 这里可以使用类型参数 */ {
// 这里可以使用类型参数
}
class ClassName<T1, T2, ..., Tn> extends ParentClass<T1> {
// 可以只使用部分类型参数
}

 (2).泛型类的使用

泛型类<类型实参> 变量名; // 定义一个泛型类引用
new 泛型类<类型实参>(构造方法实参); // 实例化一个泛型类对象

示例:

MyArray<Integer> list = new MyArray<Integer>();

 注意:泛型只能接受引用类型,所有的基本数据类型必须使用包装类! 

2.方法

方法限定符 <类型形参列表> 返回值类型 方法名称(形参列表) { ... }

对于初学者来说,重点在于学会如何使用别人定义好的泛型类(Iterable,Collection,List)。

三.注意

1.泛型Object类

Object是所有类(包括接口)的祖先类。

知识点:通过上层引用可以指向下层对象。

具体讲解:Object类的介绍 

2.作用范围

Java的泛型只在编译阶段起作用。

3.有关于包装类的使用(装箱和拆箱)

Java的泛型只支持引用,不支持基本类型(基本类型需要转为包装类)。

基本数据类型byteshortintlongfloatdoublecharboolean
对应的包装类ByteShortIntegerLongFloatDoubleCharacterBoolean

注意:包装类类型已经是对象,不能使用 "==" 比较, 应该使用 equals 进行比较。 

包装类和基本数据类型的转换——通过拆箱和装箱实现

(1).拆箱

将包装类转换为基本数据类型。

(2).装箱

将基本数据类型转换为包装类。 

示例: 

int a=1;

Integer ai=new Integer(1);

a=ai.intValue();//unboxing a=ai; 拆箱

ai=Integer.valueOf(a);//boxing ai=a; 装箱

四.有关类型转换的例题

eg1

有以下类型转换:

X类型 a;

Y类型 b;

a=b;

问:符合语法不报错,请问X类型和Y类型之间可能是哪些情况?

1.X和Y是同一个类型。

2.都是基本类型,但X类型表示的数据范围>Y类型表示的数据范围。

double>float>long>int>char>short>byte

3.X类型和Y类型都是引用类型,X类型是Y类型的上级类型。

a.X是一个接口,Y是一个类,Y实现了X接口

b.X是一个接口,Y也是一个接口,Y继承自X接口

c.X是一个类,Y也是一个类,Y继承自X类

4.自动拆箱和自动装箱。

以上情况,都是可以直接赋值的,除此之外都是语法错误。

eg2

有以下类型转换:

X类型 a;

Y类型 b;

a=(X)b;

问:符合语法不报错,请问X类型和Y类型之间可能是哪些情况? 

1.eg1的情况都可以。

2.基本类型:可以,如果从大范围强制到小范围,可能存在精度的丢失。

3.引用类型:必须在继承链上,从上往下转。

如有建议或想法,欢迎一起交流学习~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值