增强型for循环
特点:
书写简洁。
对集合进行遍历,只能获取集合元素,不能对集合进行操作,类似迭代器的简写形式,但是迭代器可以对元素进行remove操作(ListIterator可以进行增删改查的操作)。
经典的for循环与增强型for循环的不同:
整体来说:
增强型for循环使用起来比较方便,代码也比较简单,如果只是操作集合中元素的而不使用索引的话,建议用此方法。
对于普通for循环,如果需要使用索引进行其它操作的话,建议用这个。
格式上:
经典的for循环:
for(初始化部分;条件判断部分;条件更新){
循环体;
}
增强型for循环的语法:
for(元素类型 变量名:可增强迭代的内容){
访问变量名;
}
可增强迭代的内容: 数组、集合。
int[] arr = {
1,2,3,4,5};
for(int item :arr){
//特点: 在循环体中无法访问位置信息。
System.out.println(item);
}
//Arrays工具类中,存在一个方法来进行数组转集合。
List<int[]> ints = Arrays.asList(arr);
//集合的元素类型是: int数组。
for(int[] item:ints){
System.out.println(Arrays.toString(item));
}
注意事项:
-
本质是使用迭代器来进行
-
迭代前需要人为判断null的问题,否则报空指针异常。
所以,增强型for循环一般会配合一个if检查一起使用。
在迭代过程中,不能改变集合的长度。
if(arr!=null) {
for (int item : arr) {
//特点: 在循环体中无法访问位置信息。
System.out.println(item);
}
}
应用:
需要循环
数组结构的数据
时,建议使用普通for循环
,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问比较好。
需要循环
链表结构的数据
时,一定不要使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃。
区别:
增强for循环必须有
被遍历
的目标(如集合或数组)。
普通for循环遍历数组的时候需要索引
。
增强for循环不能获取下标
,所以遍历数组
时最好使用普通for循环。