增强for循环是for的一种新用法!用来循环遍历数组和集合。
1、增强for的语法
for(元素类型 e : 数组或集合对象) {
}
例如:
int[] arr = {1,2,3};
for(int i : arr) {//i的值从数组的第一个元素一直到最后一个元素!
System.out.println(i);
}
增强for的冒号左边是定义变量,右边必须是数组或集合类型。例如上例中循环遍历的主浊arr这个int数组,增强for内部会依次把arr中的元素赋给变量i。
2、增强for的优缺点
只能从头到尾的遍历数组或集合,而不能只遍历部分;
在遍历List或数组时,不能获取当前元素下标;
增强for使用便简单,这是它唯一的优点了;
增强for比使用迭代器方便一点!
3、增强for原理
任何实现了Iterable接口的类,都有返回Iterator的方法。
其实增强for底层是迭代器,任何实现了Iterable接口的类都可以使用增强for来遍历!
其实增强for内部是使用迭代器完成的!也就是说,任何实现了Iterable接口的对象都可以被增强for循环遍历!这也是为什么增强for可以循环遍历集合的原因(Collection是Iterable的子接口)。
但要注意,Map并没有实现Iterable接口,所以你不能直接使用增强for来遍历它
Map<String, String> map = new HashMap<String,String>();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");
//循环遍历map的所有键,map.keySet()返回的是Set类型,而Set是可以被增强for遍历的
for(String key : map.keySet()) {
String value = map.get(key);
System.out.println(key + "=" + value);
}