1、jdk5.0新特性
-泛型、枚举、静态导入、自动拆箱、增强for、可变参数、反射
2、泛型
-为什么要使用泛型?一般使用在集合上,为了让集合存储的内容为指定的类型,而不是失去本身类型,发生了类型转换,这个时候就是泛型的应用场景。
-泛型语法:
--集合<类型> 集合名称 = new 集合<类型>(){};
--例:List<String> li = new List<String>(){};
-在泛型里面写是一个对象,不能写基本数据类型
byte - Byte
short - Short
int - Integer
long - Long
float - Float
double - Double
char - Character
boolean - Boolean
-如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转换成集合中的元素
-如果数组中的元素都是基本数据类型,那么变成集合时,那么会将该数组作为集合中的元素存在
-泛型擦除
--首先泛型只是出现在源代码阶段,当编译之后泛型就不存在了
public static <T> void arrReverse(T[] arr)
{
T t;
for(int i=0 ; i<arr.length/2 ; i++)
{
t = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = t;
}
System.out.println(Arrays.toString(arr));
}
-list集合遍历三种方法
//普通for
for(int i=0;i<list.size();i++)
{
Integer integer = list.get(i);
System.out.println(integer);
}
//-----------------------------------
//增强for
for (Integer integer : list) {
System.out.println(integer);
}
//-----------------------------------
//迭代器
Iterator it = list.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
-ArrayList LinkedList Vector三者区别
-set集合遍历两种方式
/遍历set有两种方式
//增强for
for (String string : set) {
System.out.println(string);
}
//迭代器
Iterator it = set.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
-map集合遍两种方式
//遍历map两种方式
//1、获取所有key,通过key得到value,使用get方法
//2、获取key和value关系
//方法一
//获取所有key
Set<String> sets = map.keySet();
//遍历所有key
for (String key : sets) {
//通过key得到value
String value = map.get(key);
System.out.println(key+":"+value);
}
//方法二
//得到key和value关系
Set<Entry<String, String>> entrySet = map.entrySet();
//遍历
for (Entry<String, String> entry : entrySet) {
//entry是key和value关系
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+":"+value);
}
3、泛型使用在方法上(重点)
/*
* 使用泛型方法 需要定义一个类型,使用大写字母 T:这个T表示任意的类型
* 写在返回值之前void之前<T>
* 例:swap方法
*/
public static <T> void swap(T[] arr ,int i, int j)
{
T temp = arr[i];
arr[i]=arr[j];
arr[j] =temp;
}
4、泛型用在类上使用(了解)
*一个类上定义一个类型,这个类就可以直接使用这个类型
*类名<T>
*在类上面定义的泛型不能在静态方法使用,需要使用泛型,重新定义