自学Java第三十一课
开头我利用TreeSet做了一个案例,用到了Random
泛型
顾名思义,包括广泛的类型,能让我们存储数据更加方便。本质为参数化类型。 它所操作的数据类型被指定为一个参数。
参数化类型:将类型由原来的数据类型参数化,在使用时在传入具体类型。
格式:<类型> 指定一种类型,可看作形参; <类型1,类型2...>多种类型,可看作形参;
注:具体调用时给定类型可看成形参,形参必须为引用类型。 Object代表所有引用类型。
优点:①将运行时出现的问题提前到了编译阶段;
②避免了类型强制转换。
泛型类
格式:修饰符class类名<类型>{}
泛型方法
public class gen<T>{ public <T> void show(T t){ System.out.println(t); } }
这个方法适用于各种数据类型输出。
泛型接口
1 public interface gen{ 2 void show(T t); 3 }
1 public interface generlm implements gen<T>{ 2 //重写方法 3 public void show(T t){ 4 System.out.println(t); 5 } 6 }
类型通配符<?>
目的:为表示各种泛型List父类
List<?>:表示元素类型未知的List,元素可匹配任何类型。
注:这种带通配符的List仅表示它是各种泛型List父类,不能添加元素。
类型通配符上限:<?extends类型>
例:List<?extendsNumber>表示类型为Number 或其子类。
类型通配符下限:<?super类型>
例:List<?super NUmber>表示类型为Number 或其父类
可变参数
又称参数的个数可变,用作方法的形参出现
格式:修饰符 返回值类型 方法名(数据类型...变量名){}
例:public static sum(int...a){}
注:①a变量是一个数组;②如果一个方法有多个参数,包含可变参数,可变参数必须放最后,变量可包含所有数据
可变参数的使用
Arrays中静态方法:public static <T> List<T>asList(T...a) 返回值由指定数组支持固定大小列表
其中元素不可增删,可以修改。
List接口中静态方法:public static<E>List <E>of(E...elemnets)返回值包含任意数量元素不可变列表
其中元素不可以增删改。
Set接口中静态方法:public static<E>Set<E>of(E...elements)返回一个包含任意数量元素的不可变集合
其中元素不可增删,没有方法进行修改
明天将学习集合体系中的Map。