1. 普通遍历循环
循环语句:for (初值表达式; 测试表达式; 改变量表达式/步长){语句块}
循环结构:
循环描述:
1、运行初值表达式。
2、计算测试表达式,如果表达式为true,执行语句块;如果表达式为false,退出for循环。
3、执行改变量表达式/步长,第一次循环结束。
4、第二次循环开始:先判断测试表达式,转到第2步继续运行。
String[] arr = { "a", "1", "b", "2" };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// 控制台输出为
a
1
b
2
使用:
(1)当需要遍历数据时(集合或数组),如果用到了数组下标,一般使用此类for循环
(2)当访问指定的元素的时候,一般使用此类for循环
2. 迭代器循环
循环语句:for(Iterator iter = cars.iterator() ; iter.hasNext() ; ){语句块}
循环描述:
1、获取一个迭代器中当前位置的对象。
2、判断迭代器中后面是否还有数据,如果有则为true,执行语句块(由于指针指定的是第一个元素的上方,也就是一个空,所以一般利用next()方法得到元素);如果没有则为false,退出for循环。
3、语句块执行完毕后,第一次循环结束。
4、第二次循环开始:先判断迭代器中后面是否还有数据,转到第2步继续运行。
String[] arr = { "a", "1", "b", "2" };
List<String> list = Arrays.asList(arr);
for (Iterator<String> iterator = list.iterator();iterator.hasNext();) {
System.out.println(iterator.next());
}
// 控制台输出为
a
1
b
2
使用:
(1)迭代器一般会用在遍历集合上面。
(2)单纯的迭代,尽量不要对数据进行修改,容易出现并发异常。
(3)如果需要增/删其中的数据,最好用其子接口中的方法。
3. 增强型遍历循环
循环语句:for (变量类型 变量名称 : 被遍历的对象) 语句块
循环结构:
循环描述:
1、将数据放进循环中。
2、判断数据中是否有下一个对象,如果表达式为true,执行语句块;如果表达式为false,退出for循环。
3、语句块执行完毕后,第一次循环结束。
4、第二次循环开始:先判断数据,转到第2步继续运行。
String[] arr = { "a", "1", "b", "2" };
for (String s:arr) {
System.out.println(s);
}
// 控制台输出为
a
1
b
2
使用:
(1)如果可以使用此种for循环方式,则优先使用。
(2)此种for循环方式会丢失数据本身的索引信息,当后续还需要使用的时候,不建议使用此种循环方式。