for each

来源:互联网 发布:如何查看手机网络制式 编辑:程序博客网 时间:2024/06/14 07:52

增加型for循环
又称为:新循环 是在JDK1.5之后推出的特性,作用是遍历集合或数组
语法:
for( 接收数组中元素 : 数组或集合实例)
如String[] array = {“one”,”two”};
for(String s:array) 即表示用遍历数组的每个元素,s来接收array数组中的每一个元素

数组例子
public class Demo {

public static void main(String[] args) {    String[] array = {"one","two","three","four"};    //一般的for循环    System.out.println("一般的for循环用法");    for(int i = 0; i<array.length;i++){        System.out.println(array[i]);    }    //for each循环用法    System.out.println("for each 增强型循环用法");    for(String s : array){        System.out.println(s);    }}

}

运行结果
一般的for循环用法
one
two
three
four
for each 增强型循环用法
one
two
three
four

集合例子
注意:集合 for each 的写法,要用Object 去接收

import java.util.ArrayList;
import java.util.Collection;

public class Demo {

public static void main(String[] args) {    Collection c = new ArrayList();    c.add("one");    c.add("two");    c.add("three");    c.add("four");            for(Object o :c){    //用Object 去接收        System.out.println(o);    }}

}
运行结果:
one
two
three
four

注意点:

新循环并非新的语法,虚拟机并不支持新循环语法
新循环是编译器认可的,当编译器编译源程序时发现使用新循环遍历集合时,会将代码改为使用迭代器遍历集合
新循环遍历数组时,会将代码改为一般循环
所以使用新循环遍历集合时不要通过集合的方法增删元素,否则可能发生异常
import java.util.ArrayList;
import java.util.Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo {

public static void main(String[] args) {    Collection c = new ArrayList();    c.add("one");    c.add("#");    c.add("two");    c.add("three");    c.add("four");    /*for(Object o :c){*/    Iterator it = c.iterator();    while(it.hasNext()){        Object o = it.next();    //在用for each循环时,编译器自动for each改变为迭代器遍历           String str = (String)o;        System.out.println(str);        if("#".equals(str)){            c.remove(str);        }    }}

}
运行结果:
one
#
Exception in thread “main” java.util.ConcurrentModificationException
at java.util.AbstractListItr.checkForComodification(AbstractList.java:372)atjava.util.AbstractListItr.next(AbstractList.java:343)
at Demo.main(Demo.java:15)

原创粉丝点击