java基础39 增强for循环(也叫foreach循环)

增强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接口,抽象的不能直接new
18             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

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

posted @ 2018-06-08 17:42  DSHORE  阅读(1312)  评论(0编辑  收藏  举报