java基礎40 增強for循環(也叫foreach循環)
阿新 • • 發佈:2018-06-08
叠代器 pac 評論 數據 urn border https 抽象 oid
增強for循環是jdk1.5出現的新功能
1、增強for循環的作用
簡化了叠代器的書寫格式(註意:增強for循環底層還是使用了叠代器遍歷)
2、增強for循環的格式
for(數據類型 變量名:遍歷的目標){ }
3、增強for循環的適用範圍
如果實現了 Iterable 接口或者數組對象都可以使用增強for循環
1 package com.dhb.pattern; 2 3 import java.util.Iterator; 4 5 /** 6 * @author DSHORE / 2018-6-8 7 * 8 */ 9 class MyList implements Iterable<String>{10 Object[] arr=new Object[10]; 11 int index=0;//當前指針 12 public void add(Object o){ 13 arr[index++]=o; 14 } 15 public Iterator<String> iterator() { 16 17 return new Iterator<String>() {//new Iterator<String>():匿名內部類 Iterator接口,抽象的不能直接new18 int cursor=0;//指針 19 //hasNext()、next()、remove()都是實現new Iterator<String>()中的方法 20 public boolean hasNext() { 21 return cursor<index; 22 } 23 public String next() { 24 25 return (String)arr[cursor++];26 } 27 public void remove() { 28 29 } 30 };//結束匿名內部類的符號“;” 31 } 32 } 33 public class Demo2 { 34 public static void main(String[] args) { 35 MyList list=new MyList(); 36 list.add("張三"); 37 list.add("李四"); 38 list.add("王五"); 39 list.add("趙六"); 40 for (String string : list) { 41 System.out.print(string+",");//返回結果:張三,李四,王五,趙六, 42 } 43 } 44 }
4、增強for循環需要註意的事項
1、增強for循環底層也是使用叠代器獲取的,只不過獲取叠代器是由jvm完成,不需要我們獲取叠代器,索引在使用增強for循環遍歷元素的過程中,不準使用集合對對象 對集合元素經行修改
2、叠代器遍歷元素和增強for循環的區別:使用叠代器遍歷元素時可以刪除集合元素,而增強for循環遍歷集合元素時,不能調用叠代器裏面的remove方法刪除元素
3、普通for循環與增強for循環的區別:普通for循環可以沒有變量目標,而增強for循環一定要有變量目標
5、實例
1 package com.dhb.pattern; 2 3 import java.util.HashSet; 4 /** 5 * @author DSHORE / 2018-6-8 6 * 7 */ 8 public class Demo3 { 9 public static void main(String[] args) { 10 //集合 11 HashSet<String> set=new HashSet<String>(); 12 set.add("狗剩"); 13 set.add("鐵蛋"); 14 set.add("哮天神犬"); 15 16 Iterator<String> it=set.iterator(); //使用叠代器遍歷set集合 17 while(it.hasNext()){ 18 System.out.println(it.next()); 19 } 20 21 for(String s:set){//使用增強for循環遍歷 22 System.out.println(s); 23 } 24 25 //數組 26 int[] arr={12,2,5,0}; 27 for (int i = 0; i < arr.length; i++) {//普通for循環遍歷 28 System.out.println(arr[i]); 29 } 30 31 for (int i : arr) {//增強for循環遍歷 32 System.out.println(i); 33 } 34 } 35 }
原創作者:DSHORE 作者主頁:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/9156896.html 歡迎轉載,轉載務必說明出處。(如果本文對您有幫助,可以點擊一下右下角的 推薦,或評論,謝謝!) |
java基礎40 增強for循環(也叫foreach循環)