概念:
Java支持一个简便的for循环,称为foreach循环,即不使用下标就可以顺序的遍历整个容器。
语法结构:
for(元素类型elementType 元素element:遍历容器arrayRefVar)
{
对元素加工的语句//Process the element
}
element只是遍历容器中内容的提取,相当于把容器中的内容赋给element
相当于
temp=a; //把a给temp,上述的element就是那个临时存储空间
代码实现:
foreach语句是从头到尾顺序的执行,一般用来遍历。
/* Date:208.5.25
* Function:foreach的使用
* @author 夜听雨凉
*/
import java.util.*;
public class Test1 {
public static void main(String[] args)
{
System.out.println("--------一维数组输出:");
arrayUseForeach();
System.out.println("--------二维数组输出:");
twoDarrayUseForeach();
System.out.println("--------数组集合输出:");
arryaListUseForeach();
System.out.println("--------链式集合输出:");
LinkedListUseForeach();
}
public static void arrayUseForeach() //创建一维数组的输出方法
{
int [] array=new int [] {1,2,3}; //给数组赋值
for(int x:array) //foreach语句遍历输出数组元素
{
System.out.println(x);
}
}
public static void twoDarrayUseForeach() //创建二维数组的输出方法
{
int [][] array1=new int [][] {{1,1},{2,2}}; //给数组赋值
for(int x[]:array1) //foreach语句遍历输出二维数组的一维数组
{
for(int y:x) //foreach语句遍历输出一维数组的元素
System.out.println(y);
}
}
public static void arryaListUseForeach() //创建数组集合输出方法
{
ArrayList <Integer> al=new ArrayList<>(); //创建数组集合
al.add(1); //为集合添加元素
al.add(2);
al.add(3);
for(int x:al) //遍历输出数组集合
{
System.out.println(x);
}
}
public static void LinkedListUseForeach() //创建链式集合的输出方法
{
LinkedList <Integer> ll=new LinkedList <>(); //创建链式集合
ll.add(1); //为集合添加元素
ll.add(2);
ll.add(3);
for(int x:ll) //遍历输出数组集合
{
System.out.println(x);
}
}
}
结果显示:
--------一维数组输出:
1
2
3
--------二维数组输出:
1
1
2
2
--------数组集合输出:
1
2
3
--------链式集合输出:
1
2
3
缺点限制:
- foreach循环不能以其他顺序遍历数组,只能以顺序结构遍历。(人家都不用下标就可以遍历的,怎么停?肯定一直遍历到最后啊)
- foreach循环不能改变数组中的元素。(因为foreach上的element是临时数据,不是数据本身。咳咳,这里说的只是变量,不是对象。如果你的element是个对象,那么是可以修改的。。。)
- foreach循环不可以输入数据,输入还需要正规的for循环。
优点总结:
- 简化for循环的代码。
- 不使用下标,不会产生数组越界异常,常用于集合的遍历操作。
关于foreach循环到底能不能改变容器数据,请看 点击打开链接
欢迎各位在评论区留言探讨~~