IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素

从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁。使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据索引来访问数组元素或集合元素,foreach循环自动遍历数组或集合的每个元素。

foreach循环的语法格式如下:

for(type variableName:array|collection){

    //variableName自动迭代访问每个元素

}

在上面语法格式中,type是数组元素或集合元素的类型,variableName是一个形参名,foreach循环将自动将数组元素、集合元素依次赋给该变量。下面程序示范了如何使用foreach循环遍历数组元素:

public class ArrDemo{

    public static void main(String[] args){

         int[] arr = {1,2,3,4,5,6,7};

         for(int num : arr){

              System.out.println(num);

         }

    }

}

编译并运行这个程序,控制台将显示如图1所示的信息。

4f6c125a0be242cdb7b293b411b9ebad.png

图1  ArrDemo运行结果

 

上面的代码使用foreach循环依然可以遍历了数组中的每个元素并输出在控制台,而无需获得数组的长度,也无需根据索引来访问数组元素,foreach循环和普通的循环不同的是,它无须循环条件,无须循环迭代语句,这些部分都由系统来完成,foreach循环自动迭代数组的每个元素,当每个元素都被迭代一次后,foreach循环自动结束。

当使用foreach循环来迭代输出数组元素或集合元素时,通常不要对循环变量进行赋值,虽然这种赋值语句在语法上是允许的,但是没有太大的意义,而且极容易引起错误。例如下面的程序。

public class ForEachArrError{

    public static void main(String[] args){

         String[] books = {"Java从入门到出家",

                             "Oracle从入门到删库跑路","PHP从入门到出轨"};

         for(String book : books){

              book = "C语言从入门到抑郁症康复";

              System.out.println(book);

         }

         System.out.println(books[0]);

    }

}

编译并运行这个程序,控制台将显示如图2所示的信息。

eebbe86376f14ff598936bac71c1d7c2.png

图2  ForEachArrError运行结果

 

从上面运行结果看,由于在foreach循环中对数组元素进行赋值,结果导致不能正确遍历数组元素,不能正确地取出每个数组元素的值。而且当再次访问第一个素组元素时,发现数组元素的值依然没有改变。不难看出,当使用foreach来迭代访问数组元素时,foreach中的循环变量相当于一个临时变量,系统会把数组元素一次赋给这个临时变量,而这个临时变量不是数组元素,它只是保存了数组元素的值。因此,如果希望改变数组元素的值,则不能使用这种foreach循环。

转载于:https://my.oschina.net/u/4125915/blog/3080314

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值