这种有冒号的for循环叫做foreach循环,foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。
foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。
foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
示例代码:
List list = new ArrayList();
list.add(“1”);
list.add(“2”);
list.add(“3”);
for (String x : list) {
System.out.println(x);
}
Object s[] = list.toArray();
for (Object x : s) {
System.out.println(x.toString()); //逐个输出数组元素的值
}
这种写法是增强for循环,
for(int i = 0;i < s.length(); i++){
String str = s[i]; //当成数组的写法
}
编译器会认为:
1.创建名称为str 的String变量。
2.将s的第一个元素赋给str 。
3.执行重复的内容。
4.赋值给下一个元素str 。
5.重复执行至所有的元素都被运行为止
优点:
这种写法让我们代码看起来更加的简洁
缺点话:
- 只能顺次遍历所有元素,无法实现较为复杂的循环
2对于数组,不能方便的访问下标值;
3对于集合,与使用Interator相比,不能方便的删除集合中的内容(在内部也是调用Interator).
4 除了简单遍历并读取其中的内容外,不建议使用增强的for循环
java 1.5以后的新特性,也叫foreach 语法。可以非常方便的遍历集合,数组。
很容易理解,for (String str : s){} 在for的条件中,String str前面的是new出来的临时变量,生存周期仅在本次循环中,这个变量的值是 集合 “S” 第N次循环第N个位置的元素(访问序号为N-1)。
可以看成这样的:
String[] s = …; s是一个已存在的字符串数组
for(int i = 0; i < s.length; i ++){
String str = s[i];
//下面是操作
}
相当于调用迭代器 Iterator 遍历的简单写法 ,是一个加强型的FOR循环操作,…
for(集合对象类型 代理对象名:集合名){ }