java中的foreach循环

foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。 
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。 
foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。 
foreach的语句格式: 
for(元素类型t 元素变量x : 遍历对象obj){ 
     引用了x的java语句; 

一、foreach简化数组和集合的遍历 
下面通过两个例子简单例子看看foreach是如何简化编程的。代码如下:

 1 import java.util.Arrays;
 2 import java.util.List;
 3 import java.util.ArrayList;
 4
 5 /**
 6 * Created by IntelliJ IDEA.
 7 * User: leizhimin
 8 * Date: 2007-12-3
 9 * Time: 16:58:24
10 * Java5新特征之foreach语句使用总结
11 */
12 public class TestArray {
13     public static void main(String args[]) {
14          TestArray test = new TestArray();
15          test.test1();
16          test.listToArray();
17          test.testArray3();
18
19      }
20
21     /**
22      * foreach语句输出一维数组
23      */
24     public void test1() {
25         //定义并初始化一个数组
26         int arr[] = {2, 3, 1};
27          System.out.println("----1----排序前的一维数组");
28         for (int x : arr) {
29              System.out.println(x); //逐个输出数组元素的值
30          }
31
32         //对数组排序
33          Arrays.sort(arr);
34
35         //利用java新特性for each循环输出数组
36          System.out.println("----1----排序后的一维数组");
37         for (int x : arr) {
38              System.out.println(x); //逐个输出数组元素的值
39          }
40      }
41
42     /**
43      * 集合转换为一维数组
44      */
45     public void listToArray() {
46         //创建List并添加元素
47          List<String> list = new ArrayList<String>();
48          list.add("1");
49          list.add("3");
50          list.add("4");
51
52         //利用froeach语句输出集合元素
53          System.out.println("----2----froeach语句输出集合元素");
54         for (String x : list) {
55              System.out.println(x);
56          }
57
58         //将ArrayList转换为数组
59          Object s[] = list.toArray();
60
61         //利用froeach语句输出集合元素
62          System.out.println("----2----froeach语句输出集合转换而来的数组元素");
63         for (Object x : s) {
64              System.out.println(x.toString()); //逐个输出数组元素的值
65          }
66      }
67
68     /**
69      * foreach输出二维数组测试
70      */
71     public void testArray2() {
72         int arr2[][] = {{4, 3}, {1, 2}};
73          System.out.println("----3----foreach输出二维数组测试");
74         for (int x[] : arr2) {
75             for (int e : x) {
76                  System.out.println(e); //逐个输出数组元素的值
77              }
78          }
79      }
80
81     /**
82      * foreach输出三维数组
83      */
84     public void testArray3() {
85         int arr[][][] = {
86                  {{1, 2}, {3, 4}},
87                  {{5, 6}, {7, 8}}
88          };
89
90          System.out.println("----4----foreach输出三维数组测试");
91         for (int[][] a2 : arr) {
92             for (int[] a1 : a2) {
93                 for (int x : a1) {
94                      System.out.println(x);
95                  }
96              }
97          }
98      }
99 }

运行结果:

二、foreach语句的局限性 
通过上面的例子可以发现,如果要引用数组或者集合的索引,则foreach语句无法做到,foreach仅仅老老实实地遍历数组或者集合一遍。下面看一个例子就明白了:

时间: 2024-11-05 14:49:27

java中的foreach循环的相关文章

JAVA中的for-each循环与迭代

在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable<T>接口(位于java.lang包中),实现这个接口允许对象成为 "foreach" 语句的目标,而此接口中的唯一方法,实现的就是返回一个在一组 T 类型的元素上进行迭代的迭代器. 一.迭代器Iterator 接口:Iterator<T> 1 public interface Iterator<E>{ 2 3 boolean h

二、C++迭代器的两种实现方式 (Range for和C#、Java中的foreach)

一.迭代器概述 这个标题其实有点"标题党"的含义,因为C++在标准库中的实现迭代器的方式只有一种,也就是为类定义begin()和end()函数,C++11增加了range for语句,可以用来遍历迭代器中的元素.实现迭代器的第二种方式,就是用C++模拟C#和Java中的迭代器模式,并且我们可以定义出自己的foreach语句.除此之外,迭代器可能还有很多种实现的方法,各个库也会多自己的迭代器的实现有所定义,在这里只要明白迭代器的本质意义即可. 迭代器,也称作游标,是一种设计模式,我们可以

集合中的 for-Each循环

 数组的加强型的for-Each循环很简单,我们再来看一下集合中的for-Each 循环又是怎么样的.我们都知道集合中的遍历都是通过迭代(iterator)完成的.也许有人说,也可以按照下面的方式来遍历集合,不一定非要使用迭代: 1 List<String> list = new LinkedList<String>(); 2 list.add("a"); 3 list.add("b"); 4 list.add("c");

2.24 Java基础总结 ①for-each循环②继承概念③全类名④方法重写

①for-each循环②继承概念③全类名④方法重写 一.for-each循环依次遍历集合中每个元素的时候,for循环的一种int [] a = {1,2,3};for(int result : a){ System.out.println(result);} 全部依次遍历,但是没有细节的处理 二.继承is-a的关系子类继承来自父类中的所有属性和方法,呗继承的受访问修饰符限制但是构造不能被继承,父类的构造在构造是会起作用优点:①复用性②扩展父类属性和方法 Java是单继承,一个类只有一个父类单继承

java中的foreach用法及总结

增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的. part3当然还是循环体. foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本. foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句.从英文字面意思理解forea

&#8203;Java中使用for循环对多个Jbutton按钮监听

Java中Jbutton按钮监听,当多个按钮做的事差不多的时候是可以用for循环的(比如计算器1-9)省事省力. 监听时变量只能是final或者static,不过这些在for循环中明显不行,所以,就在循环里加了个final变量. 嘿嘿,轻松搞定. package com.xinbo; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.

Java中跳出for循环的方法

现在介绍一下在Java中,如果想跳出for循环,一般情况下有两种方法:break和continue. break是跳出当前for循环,如下面代码所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class RecTest { /** * @param args */ public static void main(String[] args) { for(int i=0; i< 10; i++){ if(i==5){ break; } Sy

php中的foreach循环

PHP中的foreach语句,常用于遍历数组. foreach一般有两种使用方式: (1)只取数组的值,不取数组的下标: (2)取数组值,同时也取数组的下标 以下面的例1和例2来解释其用法: 例1:只取值,不取下标 $member=array( '201201'=>'Tom', '201203'=>'Jack', '201211'=>'James', '201306'=>'Martin', '201605'=>'Lucy', '201612'=>'Kim',);//新建

java基础之----foreach循环的原理

记得上次面试的时候,被面试官问了一个问题:foreach循环的原理?当时有点措手不及,确实天天用,熟的不能再署的东西,突然被问原理,一下子就不知道怎么回答了.这里我查阅了一下资料,进行总结一下. 原理: List之所以能使用foreach循环遍历,是因为List都是Collection的子接口,而Collection是Iterable的子接口,List的实现类继承了一个AbstractList抽象类,这个抽象类完全实现了Iterator迭代器. 原文地址:https://www.cnblogs.