亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

老生常談foreach(增強(qiáng)for循環(huán))和for的區(qū)別

 更新時(shí)間:2017年09月04日 14:48:55   作者:看清你的未來  
下面小編就為大家?guī)硪黄仙U刦oreach(增強(qiáng)for循環(huán))和for的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

首先說一下foreach有的也叫增強(qiáng)for循環(huán),foreach其實(shí)是for循環(huán)的一個(gè)特殊簡化版。

再說一下foreach的書寫格式:

for(元素類型  元素名稱 : 遍歷數(shù)組(集合)(或者能進(jìn)行迭代的)){

語句

 }

foreach雖然是for循環(huán)的簡化版本,但是并不是說foreach就比for更好用,foreach適用于循環(huán)次數(shù)未知,或者計(jì)算循環(huán)次數(shù)比較麻煩情況下使用效率更高,但是更為復(fù)雜的一些循環(huán)還是需要用到for循環(huán)效率更高。

我們看看下面的例子:

public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //foreach循環(huán)
  for(String str : arr){       //這里的str就是為了獲取每次循環(huán)的arr中的值
   System.out.println(str);       //就相當(dāng)于 String str=arr[i]
  }
 }

但是相比較之下我們用for循環(huán)輸入就略顯麻煩

public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //for循環(huán)
  for(int i=0;i<arr.size();i++){
   System.out.println(arr.get(i)); //要獲取list中元素需要用get方法 
  }
 }

除了這種普通的集合還可以對像map這種鍵值對使用

例如:

public static void main(String[] args) {
  Map<String,String> mapstr = new HashMap<String,String>();
  mapstr.put("王", "男");
  mapstr.put("李", "男");
  mapstr.put("張", "女");
                      //entrySet方法是為了獲取鍵值對的集合
  for(Map.Entry<String, String> s : mapstr.entrySet()){ //這里的Map.Entry<String, String>其實(shí)就是一個(gè)類型 用來表示鍵值對的類型
   System.out.println("key="+s.getKey());   //這里其實(shí)還是相當(dāng)于 s=maostr.entrySet,只不過s存儲(chǔ)的是鍵值對。
   System.out.println("value="+s.getValue());  //所以可以用get方法獲取出來存儲(chǔ)的鍵值對。
  }
 }

另外foreach不支持在循環(huán)中添加刪除操作,因?yàn)樵谑褂胒oreach循環(huán)的時(shí)候數(shù)組(集合)就已經(jīng)被鎖定不能被修改,否則會(huì)報(bào)出java.util.ConcurrentModificationException異常

例如:

public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //foreach循環(huán)
  for(String str : arr){     
   System.out.println(str);   
   arr.add("1");     //對arr進(jìn)行添加 
  }
 }

關(guān)于不能添加刪除原理以及如何在foreach中添加刪除我們下篇再說。

所以總結(jié)如下:

foreach適用于只是進(jìn)行集合或數(shù)組遍歷,for則在較復(fù)雜的循環(huán)中效率更高。

foreach不能對數(shù)組或集合進(jìn)行修改(添加刪除操作),如果想要修改就要用for循環(huán)。

所以相比較下來for循環(huán)更為靈活。

以上這篇老生常談foreach(增強(qiáng)for循環(huán))和for的區(qū)別就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java遞歸來實(shí)現(xiàn)漢諾塔游戲,注釋詳細(xì)

    Java遞歸來實(shí)現(xiàn)漢諾塔游戲,注釋詳細(xì)

    這篇文章介紹了Java遞歸來實(shí)現(xiàn)漢諾塔游戲的方法,文中的代碼注釋介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 基于java涉及父子類的異常詳解

    基于java涉及父子類的異常詳解

    下面小編就為大家?guī)硪黄趈ava涉及父子類的異常詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Spring Boot3整合Mybatis Plus的詳細(xì)過程(數(shù)據(jù)庫為MySQL)

    Spring Boot3整合Mybatis Plus的詳細(xì)過程(數(shù)據(jù)庫為MySQL)

    這篇文章主要介紹了Spring Boot3整合Mybatis Plus的詳細(xì)過程(數(shù)據(jù)庫為MySQL),本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • SpringMVC 重定向參數(shù)RedirectAttributes實(shí)例

    SpringMVC 重定向參數(shù)RedirectAttributes實(shí)例

    這篇文章主要介紹了SpringMVC 重定向參數(shù)RedirectAttributes實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 詳解java并發(fā)之重入鎖-ReentrantLock

    詳解java并發(fā)之重入鎖-ReentrantLock

    這篇文章主要介紹了java并發(fā)之重入鎖-ReentrantLock,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java中ThreadLocal線程變量的實(shí)現(xiàn)原理

    Java中ThreadLocal線程變量的實(shí)現(xiàn)原理

    本文主要介紹了Java中ThreadLocal線程變量的實(shí)現(xiàn)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Java中的SynchronousQueue阻塞隊(duì)列及使用場景解析

    Java中的SynchronousQueue阻塞隊(duì)列及使用場景解析

    這篇文章主要介紹了Java中的SynchronousQueue阻塞隊(duì)列及使用場景解析,SynchronousQueue 是 Java 中的一個(gè)特殊的阻塞隊(duì)列,它的主要特點(diǎn)是它的容量為0,這意味著 SynchronousQueue不會(huì)存儲(chǔ)任何元素,需要的朋友可以參考下
    2023-12-12
  • 解析Java Class 文件過程

    解析Java Class 文件過程

    class文件全名稱為Java class文件,主要在平臺(tái)無關(guān)性和網(wǎng)絡(luò)移動(dòng)性方面使Java更適合網(wǎng)絡(luò)。它在平臺(tái)無關(guān)性方面的任務(wù)是:為Java程序提供獨(dú)立于底層主機(jī)平臺(tái)的二進(jìn)制形式的服務(wù)。下面我們來詳細(xì)解讀下它吧
    2019-05-05
  • Maven中Could not find artifact XXXX的錯(cuò)誤解決

    Maven中Could not find artifact XXXX的錯(cuò)誤解決

    本文主要介紹了Maven中Could not find artifact XXXX的錯(cuò)誤解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • mybatis對象List<String> List<Integer>屬性映射方式

    mybatis對象List<String> List<Integer>屬性映射方式

    這篇文章主要介紹了mybatis對象List<String> List<Integer>屬性映射方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論