增加型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.AbstractList
Itr.checkForComodification(AbstractList.java:372)atjava.util.AbstractList
Itr.next(AbstractList.java:343)
at Demo.main(Demo.java:15)