`

java-foreach语句使用总结

    博客分类:
  • J2SE
阅读更多
foreach语句使用总结 foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。foreach的语句格式:for(元素类型t 元素变量x : 遍历对象obj){     引用了x的java语句;}下面通过两个例子简单例子看看foreach是如何简化编程的。代码如下:一、foreach简化数组和集合的遍历import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;

/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-12-3
* Time: 16:58:24
* Java5新特征之foreach语句使用总结
*/
public class TestArray {
    public static void main(String args[]) {
         TestArray test = new TestArray();
         test.test1();
         test.listToArray();
         test.testArray3();

     }

    /**
     * foreach语句输出一维数组
     */
    public void test1() {
        //定义并初始化一个数组
        int arr[] = {2, 3, 1};
         System.out.println("----1----排序前的一维数组");
        for (int x : arr) {
             System.out.println(x); //逐个输出数组元素的值
         }

        //对数组排序
         Arrays.sort(arr);

        //利用java新特性for each循环输出数组
         System.out.println("----1----排序后的一维数组");
        for (int x : arr) {
             System.out.println(x); //逐个输出数组元素的值
         }
     }

    /**
     * 集合转换为一维数组
     */
    public void listToArray() {
        //创建List并添加元素
         List<String> list = new ArrayList<String>();
         list.add("1");
         list.add("3");
         list.add("4");

        //利用froeach语句输出集合元素
         System.out.println("----2----froeach语句输出集合元素");
        for (String x : list) {
             System.out.println(x);
         }

        //将ArrayList转换为数组
         Object s[] = list.toArray();

        //利用froeach语句输出集合元素
         System.out.println("----2----froeach语句输出集合转换而来的数组元素");
        for (Object x : s) {
             System.out.println(x.toString()); //逐个输出数组元素的值
         }
     }

    /**
     * foreach输出二维数组测试
     */
    public void testArray2() {
        int arr2[][] = {{4, 3}, {1, 2}};
         System.out.println("----3----foreach输出二维数组测试");
        for (int x[] : arr2) {
            for (int e : x) {
                 System.out.println(e); //逐个输出数组元素的值
             }
         }
     }

    /**
     * foreach输出三维数组
     */
    public void testArray3() {
        int arr[][][] = {
                 {{1, 2}, {3, 4}},
                 {{5, 6}, {7, 8}}
         };

         System.out.println("----4----foreach输出三维数组测试");
        for (int[][] a2 : arr) {
            for (int[] a1 : a2) {
                for (int x : a1) {
                     System.out.println(x);
                 }
             }
         }
     }
}运行结果:----1----排序前的一维数组
2
3
1
----1----排序后的一维数组
1
2
3
----2----froeach语句输出集合元素
1
3
4
----2----froeach语句输出集合转换而来的数组元素
1
3
4
----4----foreach输出三维数组测试
1
2
3
4
5
6
7
8

Process finished with exit code 0二、foreach语句的局限性通过上面的例子可以发现,如果要引用数组或者集合的索引,则foreach语句无法做到,foreach仅仅老老实实地遍历数组或者集合一遍。下面看一个例子就明白了:/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-12-3
* Time: 17:07:30
* foreach语句的局限性
*/
public class TestArray2 {

    public static void main(String args[]) {
        //定义一个一维数组
        int arr[] = new int[4];
         System.out.println("----未赋值前输出刚刚定义的数组----");
        for (int x : arr) {
             System.out.println(x);
         }

        //通过索引给数组元素赋值
         System.out.println("----通过循环变量给数组元素赋值----");
        for (int i = 3; i > 0; i--) {
             arr[i] = i;
         }
        //循环输出创建的数组
         System.out.println("----赋值后,foreach输出创建好的数组----");
        for (int x : arr) {
             System.out.println(x);
         }
     }
}
运行结果:----未赋值前输出刚刚定义的数组----
0
0
0
0
----通过循环变量给数组元素赋值----
----赋值后,foreach输出创建好的数组----
0
1
2
3

Process finished with exit code 0
分享到:
评论
3 楼 showzh 2011-09-23  
2 楼 h925641847 2011-07-19  
itanger 写道
没有透彻的写出来,是这样的编译时之后会Iterator it = this.list.entrySet().iterator(); it.hasNext();

不明白?
1 楼 itanger 2011-06-27  
没有透彻的写出来,是这样的编译时之后会Iterator it = this.list.entrySet().iterator(); it.hasNext();

相关推荐

    c标签-if-foreach-jar

    这个标签用于执行条件判断,类似于Java中的`if`语句。基本语法如下: ```jsp 条件表达式"&gt; &lt;!-- 当条件满足时,这里的代码将被渲染 --&gt; ``` 其中,`test`属性是一个EL(Expression Language)表达式,用于评估...

    java-core-test

    - 集合的遍历:迭代器的使用,以及foreach循环的应用。 - 集合的拷贝、比较与转换:clone(), equals(), hashCode()方法,以及Collections工具类的使用。 6. **IO流** - 流的概念:输入流(Input Stream)和输出...

    java-JDK1.7.zip java-JDK1.7.zip

    7. **开关语句支持字符串**:在switch语句中可以直接使用字符串作为条件,提高了代码的可读性和灵活性。 8. **新的文件系统API(NIO.2)**:提供了更强大和灵活的文件操作功能,包括异步文件操作、文件属性查询以及...

    Javafor循环语句使用.docx

    Java for 循环语句使用 Java 是一门面向对象编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等概念。下面是关于 Java for 循环语句使用的详细知识点: 一、语句的嵌套应用 语句...

    Java-JSTL(JSP标准标签库)介绍

    总结来说,Java-JSTL是JSP开发中的重要工具,它提供的标签库极大地简化了常见的JSP任务,提高了开发效率,增强了代码的可维护性和安全性。在实际项目中,合理使用JSTL可以优化应用的结构,提升整体质量。

    Java-control-statements.zip_process control

    在这个"Java-control-statements.zip_process control"资料中,我们将会深入探讨Java中的选择控制语句、循环控制语句和跳转控制语句。 1. **选择控制语句**: - **if语句**:Java中的if语句用于基于特定条件执行...

    java-集合-知识点汇总

    * 遍历集合:使用Iterator或foreach语句遍历集合中的元素。 Java集合的实现 Java集合的实现主要有两种:ArrayList和LinkedList。 * ArrayList:使用数组来存储元素,支持随机访问和快速查找。 * LinkedList:使用...

    Java-IO流/Stream流总结

    Java的IO流与Stream流是Java程序中处理输入输出的核心技术。IO流主要分为字节流和字符流,这两种流分别处理二进制数据(如图片、音频等)和文本数据(如ASCII、UTF-8编码的文本)。下面将详细阐述这两个流的分类、...

    JAVA8-新特性总结及案例[汇编].pdf

    以下是对Java 8新特性的详细总结: **一、Lambda表达式** Lambda表达式是Java 8的核心特性之一,它允许将函数作为一个方法的参数,从而实现函数式编程的风格。Lambda表达式的语法如下: ```java (parameters) -&gt; ...

    编译原理课程设计(Java语言)-LR分析法,foreach循环语句

    对于“foreach循环语句”的处理,这是Java中的一个关键控制结构。在编译器的语义分析阶段,我们需要检查foreach循环的正确性,例如确保遍历的对象是可迭代的,循环变量没有在循环体中被非法修改等。同时,我们还需要...

    Alibaba-Java-Coding-Guidelines-Fix-Some-Bug-1.6-2023.2-2.1

    - 使用`List.stream()`或`Map.forEach()`进行流式操作,简化代码,提高效率。 - 优先选择不可变集合,如`Collections.unmodifiableList()`,增强代码安全性。 5. **内存管理**: - 注意对象生命周期,避免内存...

    java--c标签详解

    2. `&lt;c:forEach&gt;`:这个标签用于遍历集合、数组或迭代器,类似Java的for循环。例如,可以用来遍历列表并显示每个元素。 3. `&lt;c:forTokens&gt;`:它用于将字符串分割成多个令牌,并对每个令牌执行循环。这对于处理分隔...

    Java循环语句学习例子源码

    通过分析和学习这个程序,开发者可以更好地掌握Java循环语句的使用,并能将其应用到实际项目中。 此外,程序采用Visita风格,这是一种流行的用户界面设计风格,可能涉及到布局管理器(如FlowLayout、BorderLayout等...

    Java-Persistence-with-MyBatis3源码

    MyBatis3是一个优秀的Java持久层框架,它提供了灵活的SQL映射和对象关系映射功能,使得开发人员能够避免使用JDBC代码的繁琐和易出错性。本教程将深入探讨MyBatis3的核心原理,通过对源码的分析,帮助读者掌握其工作...

    java笔试题大集合及答案(jsp-java-ejb公司笔试题)

    - **异常处理**:Java使用try-catch-finally语句块进行异常处理,了解不同类型的异常类以及如何自定义异常。 - **集合框架**:List、Set、Queue、Map接口及其实现类的使用,如ArrayList、LinkedList、HashSet、...

    Mybatis批量foreach merge into的用法

    mapper配置实现中,需要设置parameterType为java.util.List,然后使用foreach循环插入数据。 需要注意的是,使用这种方法时,数据量不能太大,否则可能会出现性能问题。在测试中,发现20字段以内的表新增,数据2000...

    java流程控制语句练习答案

    Java是一种广泛使用的面向对象的编程语言,其流程控制语句是编写程序逻辑的关键部分。流程控制语句决定了程序中语句执行的顺序,使得我们能够根据条件执行不同的代码块或者重复执行某些操作。在Java中,流程控制主要...

    java中高级面试题十大总结

    Java作为一门广泛使用的编程语言,其中高级面试题往往涵盖了多方面的知识点,旨在考察候选人的技术深度和广度。以下是对这些面试题的详细解析: 1. **内存管理与垃圾回收** - Java的内存分为堆内存(Heap)和栈...

    java-学生信息管理系统源码jsp&sevlet.zip

    通常会使用JDBC(Java Database Connectivity)来连接数据库,执行SQL语句。可能涉及的数据库操作包括CRUD(Create, Read, Update, Delete)。 **5. JSP标签库** 为了提高代码可读性和复用性,开发中可能使用了JSTL...

Global site tag (gtag.js) - Google Analytics