泛型的本质是参数化类型
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
作用:安全性 消除转换 提升性能 重用性
带有泛型的方法:
语法格式:
public <无意义的占位符> 返回值类型 方法的名字 (参数列表) { }
带有泛型的类:
语法格式:
class 类<无意义的占位符> { }
总结:在泛型类中如果写泛型方法的时候,不需要加<T> 。
带有泛型的抽象类:
语法格式:
abstract class 类名<无意义的占位符> { }
总结:继承了带有泛型的抽象类,那么继承类也需要有泛型!!!
带有泛型的接口:
语法格式:
interface 接口的名字<无意义的占位> { }
package com.qfedu.c_fanxing; //element 元素 Type 类型 interface B<T> { //成员方法 void eat(T t); } class TestB<T> implements B<T> { @Override public void eat(T t) { System.out.println(t); } } public class Demo2 { public static void main(String[] args) { TestB<Character> testB = new TestB<>(); testB.eat('g'); } }
int 的包装类 Integer
char 的包装类 Character
-
byte 的包装类 Byte
-
short 的包装类 Short
-
long 的包装类 Long
-
float 的包装类 Float
-
double 的包装类 Double
-
boolean 的包装类 Boolean
常见泛型参数名称有如下:
E:Element (在集合中使用,因为集合中存放的是元素)T:Type(Java 类)K:Key(键)V:Value(值)N:Number(数值类型)?:表示不确定的java类型
权限修饰符:
开发中最常用的是 private public
权限修饰符的名称 | 当前类 | 同一个包下面其他类 | 不同包下面子类 | 不同包下面的其他类 |
---|---|---|---|---|
public | 可以 | 可以 | 可以 | 可以 |
protected | 可以 | 可以 | 可以 | 不可以的 |
不写(默认) | 可以 | 可以 | 不可以 | 不可以 |
private | 可以 | 不可以 | 不可以 | 不可以 |
集合[重点]
集合的架构:
Collection下面有两个重要的子接口 List 和 Set
List 接口: Collection下面的子接口,存储数据特征: 有序的,可重复的 有两个比较重要的实现类: ArrayList LinkedList Set 接口: Collection下面的子接口,存储数据特征: 无序的,不可重复的 有两个比较重要的实现类: HashSet TreeSet