如题。for循坏和for增强版循坏有区别吗?如果有区别是什么?
http://www.360doc.com/content/15/0814/12/14359545_491569282.shtml
这个里面说的很详细 去看看吧 对你有帮助
简单说一下.
foreach是for的简化版本.
目的是把所有能实现迭代的数据结构都有编译器或者解释器自动解析成可以循环的对象.
在循环体中直接用循环变量取出进行操作.
所有可迭代的对象都可以被foreach出来. 比如数组, 列表, 集合等等.
for只能使用在有序的普通变量上, 比如整数, 字符类型等.
增强for循环是Java1.5以后提出的一种新的循环方式。
语法是编译器认可的,而不是JVM认可的,其本质是利用迭代器遍历集合或数组,也就是说在编译期间会转换为迭代器遍历的形式,例如
Collection<String> c = new ArrayList<String>();
c.add("one");
c.add("two");
c.add("three");
c.add("four");
for(Object o:c){
System.out.println(o);
}
在编译期间会转换为如下代码
Collection<String> c = new ArrayList<String>();
c.add("one");
c.add("two");
c.add("three");
c.add("four");
Iterator it = c.iterator();//获取迭代器
while(it.hasNext()){
Object o = it.next();
System.out.println(o);
}
优点就是简洁,缺点是无法得到循环变量(也就是得到下标)
要注意使用时不能在循环中修改元素的数量,否则会抛出异常。
正好看到这个问题感觉蛮有意思的
for效率高于foreach
foreach中运用了集合迭代器iterator