在C#和Java语言中for和foreach的区别详解
作者:蓝色的灬|黑色的丅 发布时间:2023-01-29 11:31:13
for循环和foreach循环的区别
首先在这里声明一点,C#和Java这两种语言很相似,尤其是初学的数据类型那一部分,所以这里写的for和foreach的区别在C#和Java中都适用。
我会在下面分别列出两种语言的for和foreach分别循环打印一个数组,大家可以看看区别
话不多说,直接上代码:
//c#
//先创建一个数组
int[] arr = new int[3] {99, 11, 22};
//利用for循环打印(可以创建一个变量 i;判断这个i是否小于数组的长度;每次循环i自增1)
//(并且中间这个值是一个布尔值)
for(int i = 0; i < arr.Length; i++)
{
//这里是循环体,我们让每次循环都输出数组的第i个数。
Console.WriteLine(arr[i]);
}
//foreach的括号里有四个变量(数据类型 变量名 in 数组名)
foreach(int name in arr)
{
Console.Write(name + ",");
}
//Write输出完成后不会换行,writeLine则会换行。
//加这个逗号是为了输出时把两个数字区分开
//可以在最后加一行等待读取,让控制台不要直接关闭。
Console.ReadKey();
———————以上是C#的循环输出遍历数组,下面是Java的 ————————
//Java
int[] arr = new int[3] {88, 66, 55};
for(int i = 0; i < arr.Length; i++)
{
System.out.println(arr[i]);
}
foreach(int name in arr)
{
System.out.print(name + ",");
}
//print输出完成后不会换行,println则会换行
//java比C#的这点就很方便,不用再最后一行加个等待输入来看最后结果。
//不过在vs2019中好像已经更新了,不会自动关闭,小伙伴们可以自己试试。
Java语言中和C#所需要注意的重点是一样的,就在下面,只不过输出有所区别。
看到这里很多新手可能都会觉得for循环简单一些,其实并非这样,之所以会有人这么认为是因为初学者已经习惯了一种循环,突然转变一种不太习惯,并且不能理解括号中四个值的含义,所以宁可用for
针对这一问题可以这么理解
for和foreach都是循环,新手可以认为for包含foreach,因为foreach只适用于循环数组。foreach并不是比较难,而是为了在遍历数组时更加的简单,就单纯的看遍历数组确实foreach更加简单一点。for循环确实是功能多一些,在很多地方都可以用得到,这一点foreach是做不到的,所以由此可见,foreach只适合遍历数组。
这里有表格可以帮助理解:
for | foreach | |
---|---|---|
适用范围 | 任何可以循环的地方 | 仅在遍历数组时 |
难 度 | ⭐⭐⭐ | ⭐ |
变量个数 | 3个 | 无 |
要写的值 | (创建变量;判断是否继续循环;自增) | (数据类型 变量名 in 数组名) |
值的变化 | 三个变量都需要根据不同的情况做出不同的调整 | 只有数据类型需要注意,一般为int(double)或者var |
其中foreach中的4个值很简单,希望对大家有所帮助
for循环的三个变量都是须要根据不同情况而有所改变的,foreach中的值虽说有4个,但那不是变量,基本都是固定的,只需要填写对应的数据类型,请外起一个名字,in是固定不变的,最后是要输出的数组名,另外起的名字是什么就在循环体中输出这个名字。千万不要直接输出数组名!
来源:https://blog.csdn.net/hu1262340436/article/details/108749049


猜你喜欢
- 目录一、图示二、链表的概念及结构三、单链表的实现四、完整代码的展示一、图示二、链表的概念及结构 链表是一种物理存储结构上非连续存储结构,数据
- 在windows环境下进行的测试,前提条件,windows上需要先安装openssl。配置环境变量,查看版本:import java.io.
- 去过工厂或者仓库的都知道,在工厂或仓库里面,会有很多不同的流水线,大部分的工厂或仓库,都会在不同流水线的不同工位旁边安装一台电脑,一方面便于
- 面试题:1.如何保证多线程下 i++ 结果正确?2.一个线程如果出现了运行时异常会怎么样?3.一个线程运行时发生异常会怎样?为了避免临界区的
- 使用过 mybatis 框架的小伙伴们都知道,mybatis 是个半 orm 框架,通过写 mapper 接口就能自动实现数据库的增删改查,
- 当需要重绘TabControl的背景颜色时,有两种方法。方法一网上有很多文章介绍,将tabControl的DrawMode属性设为Owner
- 使用Castle.Core.dll实现,核心代码是使用Castle.DynamicProxy.ProxyGenerator类的CreateI
- 背包问题主要是指一个给定容量的背包、若干具有一定价值和重量的物品,如何选择物品放入背包使物品的价值最大。其中又分01背包和无限背包,这里主要
- 本文实例为大家分享了javaweb多文件上传及zip打包下载的具体代码,供大家参考,具体内容如下项目中经常会使用到文件上传及下载的功能。本篇
- 前言在开发过程中经常会遇到比较排序的问题,比如说对集合数组的排序等情况,基本类型都提供了默认的比较算法,如string提供了按字母进行排序,
- 本文介绍了Android TextView属性ellipsize多行失效的解决思路,分享给大家,具体如下:多余文字显示省略号的常规做法and
- 在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内
- 此次简单的操作将数据从数据库导出生成excel报表以及将excel数据导入数据库首先建立数据库的连接池:package jdbc;impor
- 消息发送过程消息的发送可能会经过 * 、序列化、分区器等过程。消息发送的主要涉及两个线程,分别为main线程和sender线程。如图所示,主
- 经常在代码中,需要使用 DEBUG 来输出一些奇怪的东西来进行测试。但是输出的窗口只有一个,如果有一个逗比在不停输出,那么就会让输出窗口看不
- 关于mybatis基础我们前面几篇博客已经介绍了很多了,今天我们来说一个简单的问题,那就是mybatis中的缓存问题。mybatis本身对缓
- 一、Javassist入门(一)Javassist是什么Javassist是可以动态编辑Java字节码的类库。它可以在Java程序运行时定义
- Android系统支持的颜色是由4个值组成的,前3个为RGB,也就是我们常说的三原色(红、绿、蓝),最后一个值是A,也就是Alpha。这4个
- 一、线程间等待与唤醒机制wait()和notify()是Object类的方法,用于线程的等待与唤醒,必须搭配synchronized 锁来使
- 一. struts2读取进度原理分析(作为草稿存了好久,刚刚发布出来......)1.在strut2中控制文件上传信息的类是实现MultiP