增強for循環
專門用來遍歷數組和集合的。它的內部原理其實是個Iterator迭代器,所以在遍歷的過程中,不能對集合中的元素進行增刪操作。
格式:
for(元素的數據類型 變量 : Collection集合or數組){
}
例子
public static void main(String[] args) {
// 普通for
Collection<Person>col = new ArrayList<Person>();
col.add(new Person("熊大",22));
col.add(new Person("熊二",10));
col.add(new Person("吉吉國王",30));
ArrayList<Person> list = (ArrayList<Person>)col;
for(int i =0;i<list.size();i++) {
System.out.println(list.get(i));
}
// 增強for 沒有下標
/*for(要遍歷的數據類型 變量名:容器名){
}*/
for(Person p:col) {
System.out.println(p);
}

增強for循環和老式的for循環有什么區別?
遍歷數組,集合時,如果僅為遍歷,可以使用增強for,如果要對數組的元素進行操作,使用普通for循環可以通過下標操作。
泛型
泛型,用來靈活地將數據類型應用到不同的類、方法、接口當中。將數據類型作為參數進行傳遞。
優點
將運行時期的ClassCastException,轉移到了編譯時期變成了編譯失敗。
避免了類型強轉的麻煩。泛型不進class文件
例子
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("oracle");
//list.add(5);//當集合明確類型后,存放類型不一致就會編譯報錯
//集合已經明確具體存放的元素類型,那么在使用迭代器的時候,迭代器也同樣會知道具體遍歷元素類型
Iterator<String> it = list.iterator();
while(it.hasNext()){
String str = it.next();
//當使用Iterator<String>控制元素類型后,就不需要強轉了。獲取到的元素直接就是String類型
System.out.println(str.length());
}
}
