java foreach和for循环区别_java相关:老生常谈foreach(增强for循环)和for的区别

java相关:老生常谈foreach(增强for循环)和for的区别

发布于 2020-8-18|

复制链接

下面小妖就为大家带来一篇老生常谈foreach(增强for循环)和for的区别。小妖觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小妖过来看看吧

首先说一下foreach有的也叫增强for循环,foreach其实是for循环的一个特殊简化版。再说一下foreach的书写格式:for(元素类型  元素名称 : 遍历数组(集合)(或者能进行迭代的)){语句 }foreach虽然是for循环的简化版本,但是并不是说foreach就比for更好用,foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,但是更为复杂的一些循环还是需要用到for循环效率更高。我们看看下面的例子:

```xhtml

public static void main(String[] args) {

List arr = new ArrayList();

arr.add("你好");

arr.add("我好");

arr.add("大家好");

//foreach循环

for(String str : arr){   //这里的str就是为了获取每次循环的arr中的值

System.out.println(str);     //就相当于 String str=arr[i]

}

}

```

但是相比较之下我们用for循环输入就略显麻烦

```xhtml

public static void main(String[] args) {

List arr = new ArrayList();

arr.add("你好");

arr.add("我好");

arr.add("大家好");

//for循环

for(int i=0;i除了这种普通的集合还可以对像map这种键值对使用例如:

```xhtml

public static void main(String[] args) {

Map mapstr = new HashMap();

mapstr.put("王", "男");

mapstr.put("李", "男");

mapstr.put("张", "女");

//entrySet方法是为了获取键值对的集合

for(Map.Entry s : mapstr.entrySet()){ //这里的Map.Entry其实就是一个类型 用来表示键值对的类型

System.out.println("key="+s.getKey()); //这里其实还是相当于 s=maostr.entrySet,只不过s存储的是键值对。

System.out.println("value="+s.getValue()); //所以可以用get方法获取出来存储的键值对。

}

}

```

另外foreach不支持在循环中添加删除操作,因为在使用foreach循环的时候数组(集合)就已经被锁定不能被修改,否则会报出java.util.ConcurrentModificationException异常例如:

```xhtml

public static void main(String[] args) {

List arr = new ArrayList();

arr.add("你好");

arr.add("我好");

arr.add("大家好");

//foreach循环

for(String str : arr){

System.out.println(str);

arr.add("1"); //对arr进行添加

}

}

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于事件冒泡和捕获的问题

由于习惯于jquery的方便操作,往往让我们慢慢淡忘了原生js应有的功能和属性,今天重温一下事件冒泡和捕获问题。 冒泡:从内向外,如:div > body > html (不同浏览器稍有不同) 捕获:从外向内,…

root无法运行命令解决办法

今天运行一个命令wget(wg再使用tab键无法使用),如下提示 -bash: /usr/bin/wget: 权限不够 [rootwww /]# ls -Z /usr/bin/wget-rw-r--r--. root root system_u:object_r:bin_t:s0 /usr/bin/wget发现没有执行权限 chmod x /usr/bin/wget -bash: /usr/bin/wget: …

java类编写sql_用JavaBean编写SQL Server数据库连接类

以下为引用的内容://类conn.db.conndb.javapackage conn.db;import java.sql.*;public class conndb {Connection conn;ResultSet rs;private int count;public conndb() {try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");} catch (Exception ex) {}…

ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、

1.Request.ApplicationPath->当前应用的目录 Jsp中, ApplicationPath指的是当前的application(应用程序)的目录,ASP.NET中也是这个意思。 对应的--例如我的服务器上有两个web应用域名都是mockte.com 一个映射到目录mockte.com/1/ 另一个影射到 http://mockte.com/2/ …

java timezone id_java.util.TimeZone.setID()方法实例

全屏setID(String ID)方法被用于设置时区ID。这不会改变的时区对象中的任何其他数据。声明以下是java.util.TimeZone.setID()方法的声明。public void setID(String ID)参数ID--这是新的时区ID。返回值NA异常NA例子下面的例子显示java.util.TimeZone.setID()方法的使用package …

c语言中赋值截断

在c语言中进行变量赋值的时候,如果将字节多的数据类型赋给一个占字节少的变量类型,会发生“截断”。 发生这种情况的原因是:在赋值过程中只将占字节较长的变量的地位赋给占字节较少的变量。 如: int i345; char c‘…

创建一个自己的GitHub,创建自己的开源项目

作者是一个大学在读学生,自己在平时的学习中,GitHub上的开源项目给自己提供了很大的帮助。GitHub是目前使用最广泛的分布式项目管理软件,GitHub上面托管了许多非常优秀的开源项目。我觉得每一个从事IT行业都应该有一个属于自己的GitHub。下面…

设计模式之行为型(1)-职责链模式(Chain)

设计模式之行为型(1)-职责链模式(Chain)转载于:https://www.cnblogs.com/lihuali/p/7493415.html

php apache win7,win7安装apache+php

转自百度经验1 系统环境与软件1php5.5.6 下载链接:http://windows.php.net/download/#php-5.5推荐 V11 x64,也就是64bit的。2apache2.4,下载链接:http://www.apachelounge.com/download/同样是推荐 V11,64位的。3前面提…

photoshop 常用快捷键大全

一、文件新建 CTRLN打开 CTRLO 打开为 ALTCTRLO关闭 CTRLW保存 CTRLS 另存为 CTRLSHIFTS另存为网页格式 CTRLALTS打印设置 CTRLALTP页面设置 CTRLSHIFTP打印 CTRLP退出 CTRLQ 二、编辑撤消 CTRLZ向前一步 CTRLSHIFTZ向后一步 CTRLALTZ退取 CTRLSHIFTF剪切 CTRLX复制 CTRLC合并…

Ubuntu如何安装setuptools

首先百度setuptools,基本第一个就是官网的结果然后我们看到有两个这样的文件第一个不用想了,如果你要使用第一个的话,还要首先安装wheel。我们这里直接用鼠标选中第二个zip文件,然后右键,复制链接。然后在我们的Ubuntu…

Spring MVC 文件上传下载

本文基于Spring MVC 注解&#xff0c;让Spring跑起来。 (1) 导入jar包&#xff1a;ant.jar、commons-fileupload.jar、connom-io.jar。 (2) 在src/context/dispatcher.xml中添加 <bean id"multipartResolver" class"org.springframework.web.multipart.comm…

.php y=mp4,PHP输出MP4视频流函数

function GetMp4File($file) {$size filesize($file);header(“Content-type: video/mp4”);header(“Accept-Ranges: bytes”);if(isset($_SERVER[‘HTTP_RANGE’])){header(“HTTP/1.1 206 Partial Content”);list($name, $range) explode(“”, $_SERVER[‘HTTP_RANGE’]…

JMeter学习(四)参数化、断言、集合点

1.参数化 录制脚本中有登录操作&#xff0c;需要输入用户名和密码&#xff0c;假如系统不允许相同的用户名和密码同时登录&#xff0c;或者想更好的模拟多个用户来登录系统。 这个时候就需要对用户名和密码进行参数化&#xff0c;使每个虚拟用户都使用不同的用户名和密码进行访…

Windows在安装builtwith时遇到问题

builtwith是一个十分有用的工具&#xff0c;可以用来检查网站构建的技术类型。但是我在安装这个包的时候出现了问题百度之后发现是编码的问题&#xff0c;应将编码格式设置为gbk具体过程就是&#xff1a;首先要找到Python路径下的Lib文件夹的mimetypes.py文件。然后在import下面…

php class使用方法,php的类使用方法问题

php的类使用方法&#xff1a;1、类通过class关键字来定义&#xff1b;2、访问对象的时候&#xff0c;属性名前不要加【$】&#xff1b;3、通过【->】访问修改类内成员变量&#xff1b;4、函数的返回值通过return来返回。php的类使用方法&#xff1a;1.语法说明和其他语言一样…

Linux抓包

tcpdump -i eth1 -nn dst host 172.31.0.42 -w /tmp/temp.cap 监听指定的主机 $ tcpdump -i eth0 -nn host 192.168.1.231 这样的话&#xff0c;192.168.1.231这台主机接收到的包和发送的包都会被抓取。 $ tcpdump -i eth0 -nn src host 192.168.1.231 这样只有192.168.1.231这…

汇编语言中各种声明

参考链接&#xff1a;http://zhidao.baidu.com/link?urlQZiRv_6nAzF1XHOG83SwngS1HoRZXWSP2a0uQEHVDON1rP1a07xlXCiYUXd0ORQP32h_7Nhfd-afCMox8q8McK 本文仅是为了自己学习方便而已&#xff0c;勿喷。 DATAS SEGMENT;定义数据段 BUF0 DB 1;定义一个字节型变量&#xff0c;名…

linux awk数组相关操作介绍

用awk进行文本处理&#xff0c;少不了就是它的数组处理。那么awk数组有那些特点&#xff0c;一般常见运算又会怎么样呢。我们先看下以下的一些介绍&#xff0c;结合样例我们会解说下它的不同之处。在 awk 中数组叫做关联数组(associative arrays)&#xff0c;由于下标记能够是数…

java求最优解库,IPOPT在第二次求解时找到最优解

通常当我尝试使用IPOPT解决问题时&#xff0c;即使问题不可行&#xff0c;IPOPT也会显示运行过程&#xff0c;例如显示问题有多少约束以及问题的其他一般信息&#xff0c;但这次我遇到了一个奇怪的问题 . 我第一次解决它没有显示的问题&#xff0c;但第二次解决它&#xff0c;I…