• 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

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

  • 相关阅读:
    Docker安装Zookeeper并进行操作
    JVM 完整深入解析
    synchronized关键字加到static静态方法和非static静态方法区别
    submit与execute区别
    ThreadPoolTaskExecutor和ThreadPoolExecutor区别
    Redis占用内存大小
    Java中CycliBarriar和CountdownLatch区别
    Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
    文本格式
    JavaScript事件
  • 原文地址:https://www.cnblogs.com/dshore123/p/9156896.html
Copyright © 2020-2023  润新知