增強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()); } }