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.pswp.cn/news/376041.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376041.shtml
英文地址,請注明出處:http://en.pswp.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…