`

for-each循环

 
阅读更多
/*
* 学好程序的方法:
* 
* 1 分析清楚任何一个程序、函数、类和对象和变量在内存中清楚的内存分配和运行调用情况
* 2 分析清楚任何一个Java类的实现情况
* 3 多看看源代码
   4 每一个知识点网上都有详细说明,除了学书本的,也要补充网上的知识
* 
* */

清单 1
// 使用 for-each 类型的循环. 
class ForEach {  
  public static void main(String args[]) {  
    int nums[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };  
    int sum = 0;  
 
    // 使用for-each 类型的循环求和
    for(int x : nums) {  
      System.out.println("Value is: " + x); 
      sum += x;  
    }  
 
    System.out.println("Summation: " + sum); 
  }  
}

清单 2
// 在 for-each 循环中使用break,下面程序仅计算nums的前五个元素之和. 
class ForEach2 {  
  public static void main(String args[]) {  
    int sum = 0;  
    int nums[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };  
 
    // 求和. 
    for(int x : nums) {  
      System.out.println("Value is: " + x);  
      sum += x;  
      if(x == 5) break; // 当X是5时跳出循环 
    }  
    System.out.println("Summation of first 5 elements: " + sum);  
  }}

清单 3
// for-each循环中的迭代变量是"只读的",因为它与数组的下标相关,
//对迭代变量付值时,对数组下标是没有影响的. 
class NoChange {   
  public static void main(String args[]) {   
    int nums[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };   
  
    for(int x : nums) {   
      System.out.print(x + " ");  
      x = x * 10; // 不会影响 nums 
    }   
    
    System.out.println(); 
 
    for(int x : nums)  
      System.out.print(x + " ");  
 
    System.out.println(); 
  }   
}

程序的输出:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

清单 4
// 在多维数组上使用for-each
//在JAVA中,多维数组是数组的数组, 每次迭代时要取下一个数组而不是单个元素,
//如二维数组的情况,迭代变量是对一维数组的引用.
class ForEach3 {  
  public static void main(String args[]) {  
    int sum = 0;  
    int nums[][] = new int[3][5];  
  
    // 给 nums 赋值 
    for(int i = 0; i < 3; i++)   
      for(int j=0; j < 5; j++)  
        nums[i][j] = (i+1)*(j+1);  
  
    // 用 for-each 显示数组中的元素并求和  
    for(int x[] : nums) {  
      for(int y : x) { 
        System.out.println("Value is: " + y);  
        sum += y;  
      } 
    }  
    System.out.println("Summation: " + sum);  
  }  
}

清单 5
// 用for-each循环搜索数组  
class Search {  
  public static void main(String args[]) {  
    int nums[] = { 6, 8, 3, 7, 5, 6, 1, 4 }; 
    int val = 5;  
    boolean found = false;  
 
    // 用 for-each 在数组中搜索一个值
    for(int x : nums) {  
      if(x == val) {  
        found = true;  
        break;  
      }  
    }  
  
    if(found)   
      System.out.println("Value found!");  
  }  
}

清单 6
// 在collection集合的元素中进行for each循环
import java.util.*; 
  
class AvgCollection {  
  static double getAvg(ArrayList nums) { 
    double sum = 0.0; 
 
    for(double itr : nums) 
      sum = sum + itr; 
 
    return sum / nums.size(); 
  } 
     
  public static void main(String args[]) {  
    ArrayList list = new ArrayList(); 
 
    list.add(10.14); 
    list.add(20.22); 
    list.add(30.78); 
    list.add(40.46); 
 
    double avg = getAvg(list); 
 
    System.out.println("List average is " + avg); 
   
  }  
}

清单 7
// 在一个 Iterable 对象上使用for each循环.
import java.util.*; 
 
// 这个类支持字符串中字符的迭代

class StrIterable implements Iterable, 
                             Iterator { 
  private String str; 
  private int count = 0; 
 
  StrIterable(String s) { 
    str = s; 
  } 
 
  public boolean hasNext() { 
    if(count < str.length()) return true; 
    return false; 
  } 
 
  public Character next() { 
    if(count == str.length())  
      throw new NoSuchElementException(); 
 
    count++; 
    return str.charAt(count-1); 
  } 
 
  public void remove() { 
    throw new UnsupportedOperationException(); 
  } 
 
  // 这个方法实现Iterable. 
  public Iterator iterator() { 
    return this; 
  } 
} 
 
class ForEachIterable {  
  public static void main(String args[]) {  
    StrIterable x = new StrIterable("This is a test."); 
 
    // 显示每一个字符
    for(char ch : x) 
      System.out.print(ch); 
 
    System.out.println(); 
  }  
}

运行结果:
C:\java>java   ForEachIterable
This is a test.
                      
分享到:
评论

相关推荐

    MATLAB工具箱大全-将多重循环转为单重循环-For-Each

    本篇将详细介绍如何使用MATLAB中的`for-each`循环将多重循环转换为单重循环,以提升程序性能。 `for-each`循环,也称为“foreach”或“遍历”循环,是MATLAB中处理数组、向量或细胞数组的一种高效方式。它允许我们...

    Java for-each循环使用难题2例(高级使用方法)

    Java的for-each循环,也称为增强for循环,是自Java 5引入的一项特性,它极大地简化了集合和数组的遍历操作。在传统的for循环中,我们需要手动管理索引,而在迭代器模式中,我们需要调用`hasNext()`和`next()`方法。...

    XYXDBP-WGP#Effective-Java#第58条:for-each循环优先于传统的for循环 f82c07ec4f6

    下面是用一个传统的for循环遍历集合的例子:用传统的for循环遍历数组的做法如下:这些做法逗比while循环更好,但是它们并不完美。如果真的那么不幸,并且外部集

    详解JAVA中的for-each循环与迭代

    在Java编程语言中,`for-each`循环和迭代器是两种主要的遍历集合(如数组和集合)的方式。本文将深入探讨这两种方法,并强调它们的用途、优点以及潜在的陷阱。 首先,我们来看一下迭代器(Iterator)。迭代器是Java...

    VB For each循环实例

    在VB(Visual Basic)编程语言中,`For Each`循环是一种非常重要的控制结构,它用于遍历集合或数组中的每一个元素。在这个实例中,我们将深入理解`For Each`循环的工作原理,以及如何在实际编程中有效地使用它。 `...

    斗地主发牌

    在Java编程语言中,"斗地主发牌"是一个典型的示例,用于教授和实践基本的面向对象编程概念,如构造函数、对象数组以及for-each循环。斗地主是一种广受欢迎的扑克游戏,通常涉及三名玩家和一副54张牌的牌组。在这个...

    java循环结构

    For-Each循环(也称为增强For循环)是Java 5引入的新特性,主要用于遍历集合或数组中的每个元素。其语法为: ```java for (类型 变量 : 集合/数组) { // 循环体 } ``` 假设`Demo4.java`演示了使用For-Each...

    【MATLAB工具箱集锦】- For-Each.rar

    22 For-Each 23 PlotPub 24 Sheffield大学最新遗传算法工具箱 25 Camera Calibration 像机标定工具箱 26 Qhull(二维三维三角分解、泰森图)凸包工具箱 2019版 27 jplv7 28 MatlabFns 29 张量工具箱Tensor Toolbox 30 ...

    JDK新特性.doc

    总的来说,Java的for-each循环提供了更直观、更安全的方式来遍历数组和集合,减少了代码量,提高了可读性,并降低了潜在的编程错误。这是一个非常实用的特性,自JDK 5以来就被广泛使用,并且在后续的JDK版本中得到了...

    JAVA的高级新特性

    这里我们将详细探讨几个重要的特性:For-Each循环、自动装包/拆包、可变参数以及注解。 1. **For-Each循环**: - For-Each循环,又称为增强型for循环,是从Java 5开始引入的。它的主要目的是简化对数组和集合的...

    第02章 Java编程基础 14 For循环

    除了基本形式,Java还支持更复杂的For循环结构,如For-Each循环(也称为增强For循环),它简化了遍历数组或集合的操作。For-Each循环的语法如下: ```java for (数据类型 变量 : 集合或数组) { // 循环体 } ``` ...

    Java循环语句之for共4页.pdf.zip

    Java 5引入了一种更简洁的循环方式,被称为for-each循环或增强型for循环,它主要用于遍历数组或集合。基本语法如下: ```java for (类型 变量 : 集合或数组) { // 循环体代码 } ``` 例如,遍历一个整数数组: ```...

    java遍历数组方法.txt

    Java提供了多种遍历数组的方法,包括使用传统的for循环、增强型for循环(for-each循环)、`Arrays`类中的方法以及转换数组到集合后的操作等。下面将详细介绍这些方法及其应用场景。 #### 1. 通过索引遍历数组 这是...

    JDK5.0新特性 反射、枚举.rar

    以下将详细讲解标题和描述中提到的几个关键特性:反射、枚举以及for-each循环。 首先,我们来看反射(Reflection)。反射是Java提供的一种能够在运行时检查类、接口、字段和方法的能力。通过反射,我们可以动态地...

    Java程序设计(雍俊海)ch05

    Java的for-each循环是一种简化版的for循环,使得遍历数组或集合变得更加简洁。在for-each循环中,不需要显式地初始化、比较和更新迭代变量,只需指定迭代的目标集合即可。这种语法极大地提高了代码的清晰度,减少了...

    前端开源库-seebigs-each

    相比JavaScript的原生`Array.prototype.forEach()`和`for...in`循环,`seebigs-each` 提供了更全面的错误处理和更好的跨环境一致性。对于大型项目或需要稳定性的场景,使用`seebigs-each` 可能更为合适。 ### 总结 ...

    Java编程技术课件:03数组(4学时).pptx

    在这个例子中,虽然在for-each循环内部增加了元素的值,但因为for-each循环使用的是元素的副本,所以原始数组并未改变。 二维数组是数组的数组,它可以表示矩阵或其他多维结构。声明和初始化二维数组的方式与一维...

    Java for循环几种写法整理

    如果你想遍历自定义数据结构,可以通过实现`Iterable`接口和`Iterator`接口来支持for-each循环。例如: ```java public class MyCollection implements Iterable&lt;Integer&gt; { private List&lt;Integer&gt; numbers = ...

    for_each 返回值

    for_each 返回值详解 在 C++ STL 中,for_each 算法是一种非常有用的算法,它可以对容器中的每个元素应用一个函数对象(仿函数)。在本文中,我们将详细介绍 for_each 返回值的使用方法和实现原理。 for_each 算法...

    JDK1.5的五大新特性

    For-Each 循环(也称为增强型 for 循环)简化了对集合的遍历过程。在引入 For-Each 循环之前,遍历集合通常需要使用迭代器,并且可能需要显式地进行类型转换。使用 For-Each 循环后,可以更简洁地遍历集合中的每个...

Global site tag (gtag.js) - Google Analytics