foreach 和 for 循环的区别

foreach 和 for 循环的区别1 如果只是遍历集合或者数组 用 foreach 好些 快些 2 如果对集合中的值进行修改 就要用 for 循环了 其实 foreach 的内部原理其实也是 Iterator 但它不能像 Iterator 一样可以人为的控制 而且也不能调用 iterator remove 更不能使用下标来访问每个元素 所以不能用于增加 删除等复杂的操作

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 
        
          list = new ArrayList 
         
           (); 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); } } } } } 
          
        

foreach语句的局限性 

通过上面的例子可以发现,如果要引用数组或者集合的索引,则foreach语句无法做到,foreach仅仅老老实实地遍历数组或者集合一遍












版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203821.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:30
下一篇 2026年3月19日 下午9:31


相关推荐

  • centos7.0 web服务器搭建「建议收藏」

    centos7.0 web服务器搭建「建议收藏」centos7.0web服务器搭建前言按照先易后难排序,在vmware虚拟机环境下模拟,统一防火墙为Firewall,统一在xshell下操作终端实现搭建.(强烈建议新手安装选择带gui服务器这样终端操作可以复制,分析文件,熟系操作之后可以最小安装(如果没有桌面,用xshell连接操作终端比较方便),我就是进过这样的坑)关于搭建分为三步,第一步配置网络(非虚拟机…

    2022年5月28日
    45
  • linux中的ldd命令简介

    linux中的ldd命令简介在linux中,有些命令是大家通用的,比如ls,rm,mv,cp等等,这些我觉得没有必要再细说了。而有些命令,只有开发人员才会用到的,这类命令,作为程序员的我们,是有必要了解的,有的甚至需要熟练使用。有的人总说,这些命令不重要,用的时候去查就行了,这么多么扯淡的说法啊。具体用法细节是可以可查,但至少得知道有ldd这个东西吧。连ldd都不知道,怎么知道ldd是干啥的呢?

    2022年4月28日
    79
  • 算法之记忆化搜索_艾宾浩斯记忆曲线的算法实现

    算法之记忆化搜索_艾宾浩斯记忆曲线的算法实现记忆化搜索其实就是暴力搜索的过程中保存一些已经计算过的状态(思想类似于动态规划,保存计算过的状态),在暴力搜索的过程中利用这些计算过的状态从而减少很大程度上的计算,从而达到时间复杂度上的优化。1【问题描述】 小明想知道,满足以下条件的正整数序列的数量: 1.第一项为n; 2.第二项不超过n; 3.从第三项开始,每一项小于前两项的差的绝对值。 请计算,对于给定的n,有多少种满足条件的序列。【输入格式】 输入一行包含一个整数n。【输出格式】 输出一个整数,表示答案。答案可能很大

    2026年4月14日
    7
  • c语言学生成绩管理系统_学生成绩管理系统c++代码结构体

    c语言学生成绩管理系统_学生成绩管理系统c++代码结构体c语言管理系统牛~~/*引用库函数*/#include<stdio.h>#include<stdlib.h>#include<string.h>/*定义结构体数组*/typedefstruct{charnum[12];/*学号*/charname[20];/*姓名*/charsex[2];/*性别*/intscore[3];/*成绩*/

    2025年11月20日
    4
  • pycharm中同时注释多行代码快捷键

    pycharm中同时注释多行代码快捷键快捷键 代码选中的条件下 同时按住 Ctrl 被选中行被注释 再次按下 Ctrl 注释被取消

    2026年3月27日
    2
  • ArcGIS二次开发基础教程(09):叠加分析

    ArcGIS二次开发基础教程(09):叠加分析ArcGIS二次开发基础教程(09):叠加分析缓冲区分析的概念及原理请查看帮助文档http://desktop.arcgis.com/zh-cn/arcmap/latest/tools/analysis-toolbox/how-buffer-analysis-works.htm缓冲区分析//实现对图层中所有点要素进行缓冲分析IGraphicsContainergraphicsConta…

    2022年7月23日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号