在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
猜你喜欢
- Pre本篇博文我们开始梳理下Spring 提供的测试解决方案。对于 Web 应用程序而言, 一个应用程序中涉及数据层、服务层、Web 层,以
- 本文实例讲述了Android EditText限制输入字数的方法。分享给大家供大家参考,具体如下://新浪微博字数限制private sta
- 废话不多说,我们先来认识一下这个GDI+,看看它到底长什么样。GDI+:Graphics Device Interface Plus也就是图
- springcloud eureka切换nacos配置中心地址: http://10.166.9.7:8848/nacos/bootstra
- ShardingSphereShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、
- 本文实例讲述了java实现的DES加密算法。分享给大家供大家参考,具体如下:一、DES加密算法介绍1、要求密钥必须是8个字节,即64bit长
- 最近ui同学使用了一种新字体(锐字锐线怒放黑简) 发现全部切成图片字体 吓死我了unity3d和fairygui搭配使用字体过程1.第一步肯
- 一、String类概述String类代表字符串,java程序中的所有字符串文字(例如"abc")都被实现为此类的实例。也
- 自用项目中统一Eclipse格式化Java、JavaScript、JSP、HTML代码设置1.Window->Preferences
- 一, eclipse springboot打war包1. 配置pom.xml文件<packaging>war</packa
- Android 中Activity 之间传递参数1.传递简单数据在A Activity中findViewById(R.id.startBAc
- 1、前言当提及如何终止一个线程时,部分读者通常立马想到的方法肯定是stop(),但是stop()方法并不被推荐使用(很多规范中是禁止使用的)
- 一、前言尽管Unity有一个像样的脚本编辑器(Mono),但很多人喜欢使用另一个编辑器。这篇短文解释了如何更改脚本编辑器,并介绍了Mono的
- 目录1、两阶段终止模式介绍2、Terminator代码演示3、TerminationRequester4、模拟客户端或者服务端都可能终止服务
- 昨天遇到了点问题解决浪费了一些时间(导致更新内容较少)回顾下问题项目出现Unable to import maven project: Se
- 前言之前探讨过的 sealed class 和 sealed interface 存在 module 的限制,但其主要用于密封 class
- 前言今天我们继续聊聊在SprinBoot中如何集成参数校验Validator,以及参数校验的高阶技巧(自定义校验,分组校验)。&ld
- 在Android中,Handler是一个使用的非常频繁的东西,输入事件机制和系统状态,都通过Handler来进行流转,而在Handler中,
- 接上一篇文章:Android实现图片区域裁剪功能上一篇文章提及了通过调用系统相册或拍照来实现图片的缩放\裁剪。不过这对于笔者项目的要求同样不
- 前言Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性。而这样的方