1.前言
我们在C语言中曾经学习过3种循环语句:while循环、for循环和do while循环,在java中,有一种for...each语句,for...each语句是for语句的特殊简化版本,也称为是增强的for循环,是JDK1.5的新特征之一,在遍历数组和集合方面,为开发人员提供了极大的方便,虽然不能够完全取代for语句,但是任何的for...each语句都可以改写为for语句版本。
2.for语句的语法格式
for...each不是一个关键字,其语法格式如下:
for(部分类型 变量名:整体)
{
循环体;
}
其中,整体一般为数组类型,其由多个值组成,每次从整体中抽取一个元素,并复制给冒号前的变量。例如
int []months={1,2,3,4,5};
for(int month:months) // 整体都多个int组成,每次从数组中取出一个,赋值给month
{
System.out.println(month);
}
上图运行结果为:
3.与for语句的区别之处
首先,二者从语法格式上来说很不同,for(表达式1;表达式2;表达式3),for语句中的三个表达式分别代表循环从哪里开始,到哪里结束,增量操作,而在for...each语句中,我们可以观察到循环就是很简单,从整体的第一个元素开始,到取出整体的最后一个元素结束为止。也就是说,for循环在使用时需要指定循环次数,for each不需要。二者详细区别请在优快云中参考其他博主文章
浅析Java中for循环和foreach循环的区别
for...each语句经JDK编译后为普通的for循环。
4.for...each循环应用实例
ega1.遍历数组输出其中各元素
public class ForEachDemo
{
public static void main(String[]args)
{
String []str={"a","b","c"}; // 定义一个字符串数组
int arr[][]={{9,13},{3,1}}; // 定义一个二维数组
for(String s:str)
{
System.out.print(s+" "); // 一维的很好理解对吧,就三个元素,a,b,c,依次输出就完事儿了,很好,接下来我们来继续看二维的
}
for(int a[]:arr) // 整体的每一个元素仍然是一个集合,元素1:{9,13},元素2:{3,1}
{
for(int i:a) // 此时数组a为整体,而数组a在第一次是{9,13},取出a的 第一个元素9赋值给i
{
System.out.println(i+" ");
}
}
}
}
运行结果如下:
for...each语句的局限性:如果要引用数组或者集合的指定元素(例如给某个数组元素赋值等),则for..each语句无法做到,仍需要使用基本的for语句。