引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需要先获得数组的长度或集合的迭代器,比较麻烦。
JDK5中定义了一种新的语法----增强for循环,以简化此类操作。增强for循环只能用在数组或实现Iterable接口的集合上。
语法格式:
for(变量类型 变量:需迭代的数组或集合){
}
1 package cn.itcast.demo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.Iterator; 6 import java.util.LinkedHashMap; 7 import java.util.List; 8 import java.util.Map; 9 import java.util.Map.Entry; 10 import java.util.Set; 11 12 import org.junit.Test; 13 14 public class Demo { 15 // 增强for循环 16 17 public static void main(String[] args) { 18 // TODO Auto-generated method stub 19 20 } 21 22 @Test 23 public void test1() { 24 int arr[] = { 1, 2, 3 }; 25 for (int num : arr) { 26 System.out.println(num); 27 } 28 } 29 30 @Test 31 public void test2() { 32 List list = new ArrayList(); 33 list.add(1); 34 list.add(2); 35 list.add(3); 36 list.add(4); 37 38 for(Object obj:list){ 39 int i = (Integer) obj; 40 System.out.println(i); 41 } 42 } 43 44 45 @Test 46 public void test3() { 47 Map map = new LinkedHashMap(); 48 map.put("1", "aaa"); 49 map.put("2", "bbb"); 50 map.put("3", "ccc"); 51 map.put("4", "ddd"); 52 map.put("5", "eee"); 53 54 //传统方式1 55 Set set = map.keySet(); 56 Iterator it = set.iterator(); 57 while(it.hasNext()){ 58 String key = (String) it.next(); 59 String value = (String) map.get(key); 60 System.out.println(key + "=" + value); 61 } 62 } 63 64 65 @Test 66 public void test4() { 67 Map map = new LinkedHashMap(); 68 map.put("1", "aaa"); 69 map.put("2", "bbb"); 70 map.put("3", "ccc"); 71 map.put("4", "ddd"); 72 map.put("5", "eee"); 73 74 //传统方式2 75 Set set = map.entrySet(); 76 Iterator it = set.iterator(); 77 while(it.hasNext()){ 78 Map.Entry entry = (Entry) it.next(); 79 String key = (String) entry.getKey(); 80 String value = (String) entry.getValue(); 81 System.out.println(key + "=" + value); 82 } 83 } 84 85 @Test 86 public void test5() { 87 Map map = new LinkedHashMap(); 88 map.put("1", "aaa"); 89 map.put("2", "bbb"); 90 map.put("3", "ccc"); 91 map.put("4", "ddd"); 92 map.put("5", "eee"); 93 94 //增强for循环1 95 for(Object obj:map.keySet()){ 96 String key = (String) obj; 97 String value = (String) map.get(key); 98 System.out.println(key + "=" + value); 99 } 100 } 101 102 @Test 103 public void test6() { 104 Map map = new LinkedHashMap(); 105 map.put("1", "aaa"); 106 map.put("2", "bbb"); 107 map.put("3", "ccc"); 108 map.put("4", "ddd"); 109 map.put("5", "eee"); 110 111 //增强for循环2 112 for(Object obj:map.entrySet()){ 113 Map.Entry entry = (Entry) obj; 114 String key = (String) entry.getKey(); 115 String value = (String) entry.getValue(); 116 System.out.println(key + "=" + value); 117 } 118 } 119 120 //注意增强for循环只适合去数据,不可以该数据。 121 @Test 122 public void test7(){ 123 int arr[] = {1,2,3}; 124 for(int i:arr){ 125 i = 10; 126 } 127 System.out.println(arr[0]); 128 System.out.println(arr[1]); 129 System.out.println(arr[2]); 130 } 131 132 }
注意增强for循环只适合去数据,不可以该数据。要修改数据只能用传统方式。