Day 14
Jdk 5.0的新特性
Jdk1.1 1.2 1.3 1.4 5.0
**泛型,枚举 , 静态导入 , 自动产装箱 , 增强for循环, 可变参数
反射
泛型:为什么要使用泛型?
一般在集合上,比如现在把一个字符串类型的值放在集合里面,这个时候,这个值放入到集合之后,失去了本身的类型,之能是object,这个时候,比如想要进行类型转换,很容易出现类型转换的错误,可以使用泛型来解决。
如何使用:
常用在 list set map上面
在list上:
public void testList(){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
//使用三种方法遍历
//1 普通方法
for(inti = 1; i<=list.size();i++){
System.out.println(list.get(i));
}
//2 迭代器
Iterator<String> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//3 增强for循环
for (String s : list) {
System.err.println(s);
}
在set上使用泛型:
publicstaticvoid testSet(){
Set<String> set = new HashSet<String>();
set.add("aaa");
set.add("bbb");
set.add("ccc");
//遍历
//1 迭代器
Iterator<String> it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//2 增强for
for (String s2 : set) {
System.out.println(s2);
}
}
在map上使用泛型:
Map的结构 key ---value的形式
publicstaticvoid testMap(){
Map<String, String> map = new HashMap<String, String>();
map.put("aaa", "111");
map.put("bbb", "222");
map.put("ccc", "333");
//遍历map有两种方法
// 1 获取key 的值,通过get方法来获取value的值
Set<String> set = map.keySet();
//遍历key
for (String key : set) {
String value = map.get(key);
System.out.println(key +":" + value);
}
// 2获取key和value的关系
//得到key和value的关系
Set<Entry<String, String>> set1 = map.entrySet();
//遍历
for (Entry<String, String> entry : set1) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+":" +value);
}
}
在泛型里面必须写的是一个对象,不可以写基本的数据类型
写基本数据类型对应的包装类
byte---Byte
short---Short
int---Integer
long---Long
float---Float
double---Double
char---Character
Boolean---Boolean
泛型使用在方法上:
目标:定义一个数组,实现指定位置上数组元素的交换
当方法逻辑相同只是数据的类型不同,这个时候就可以使用泛型
使用泛型方法需要定义一个类型,使用大写的字母表示 T:这个T可以表示任何的类型,写在方法返回值之前,表示定义了一个类型这个类型是T
Public static <T> void compare(T[]arr,int a,int,b){
T temp = arr[a]; arr[a]=arr[b]; arr[b]=temp;
}
这样就可以实现所有类型的交换
泛型在类上面的使用,不能再静态方法上使用