最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 增強型for循環(huán)語法詳解

 更新時間:2025年04月16日 15:57:59   作者:飛滕人生TYF  
增強型 for 循環(huán)(也稱為 “for-each” 循環(huán))是 Java 從 JDK 5 開始引入的一種便捷循環(huán)語法,旨在簡化對數(shù)組或集合類的迭代操作,這篇文章主要介紹了java 增強型for循環(huán) 詳解,需要的朋友可以參考下

Java 增強型 for 循環(huán)(Enhanced for Loop)詳解

增強型 for 循環(huán)(也稱為 “for-each” 循環(huán))是 Java 從 JDK 5 開始引入的一種便捷循環(huán)語法,旨在簡化對數(shù)組或集合類的迭代操作。

1. 基本語法

語法格式

for (類型 變量 : 迭代對象) {
    // 循環(huán)體
}
  • 類型:迭代對象中元素的類型。
  • 變量:每次迭代時,存儲當前元素的變量。
  • 迭代對象:數(shù)組或?qū)崿F(xiàn)了 Iterable 接口的集合(如 List、Set 等)。

2. 使用示例

2.1 遍歷數(shù)組

public class EnhancedForArray {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        for (int num : numbers) {
            System.out.println(num); // 輸出:1, 2, 3, 4, 5
        }
    }
}

2.2 遍歷集合

import java.util.ArrayList;
import java.util.List;
public class EnhancedForList {
    public static void main(String[] args) {
        List<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");
        for (String fruit : fruits) {
            System.out.println(fruit); // 輸出:Apple, Banana, Cherry
        }
    }
}

3. 特性與限制

3.1 特性

簡潔性

  • 不需要手動管理索引或迭代器,代碼更易讀。
  • 對比傳統(tǒng) for 循環(huán),不需要獲取數(shù)組長度或調(diào)用集合的迭代器。

適用性廣泛

  • 可用于數(shù)組、List、Set、Map(遍歷 entrySet()、keySet()values())。

3.2 限制

無法修改集合結(jié)構

  • 增強型 for 循環(huán)中,不能直接對集合進行 addremove 操作,否則會拋出 ConcurrentModificationException。
  • 示例:
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
for (String s : list) {
    if (s.equals("A")) {
        list.remove(s); // 會拋出異常
    }
}

如果需要修改集合結(jié)構,可以使用 迭代器

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String s = iterator.next();
    if (s.equals("A")) {
        iterator.remove(); // 安全地刪除元素
    }
}

無法訪問索引

增強型 for 循環(huán)中無法直接獲取元素的索引。如果需要索引,需使用傳統(tǒng) for 循環(huán):

String[] fruits = {"Apple", "Banana", "Cherry"};
for (int i = 0; i < fruits.length; i++) {
    System.out.println("Index " + i + ": " + fruits[i]);
}

只支持順序訪問

適用于 Iterable 接口的集合(如 List、Set),不適用于需要隨機訪問的場景。

4. 遍歷 Map 的增強型 for

4.1 遍歷 keySet

遍歷 Map 的所有鍵:

import java.util.HashMap;
import java.util.Map;
public class EnhancedForMap {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("A", 1);
        map.put("B", 2);
        map.put("C", 3);
        for (String key : map.keySet()) {
            System.out.println("Key: " + key + ", Value: " + map.get(key));
        }
    }
}

4.2 遍歷 entrySet

更高效地同時遍歷鍵和值:

for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}

5. 適用場景

遍歷數(shù)組

  • 對于大小已知且不需要修改的數(shù)組,增強型 for 是最佳選擇。

遍歷集合

  • 遍歷 List、Set 等集合,尤其是當集合不需要修改時。

遍歷 Map

  • 使用 entrySet() 時,增強型 for 簡潔而高效。

簡化代碼

  • 避免手動管理索引或迭代器。

6. 常見問題

6.1 為什么增強型 for 循環(huán)不能修改集合?

增強型 for 底層使用了 迭代器 來遍歷集合,如果直接修改集合結(jié)構(如添加或刪除元素),會導致迭代器失效,拋出 ConcurrentModificationException。

6.2 如何在增強型 for 中訪問索引?

可以在增強型 for 中手動維護索引:

String[] fruits = {"Apple", "Banana", "Cherry"};
int index = 0;
for (String fruit : fruits) {
    System.out.println("Index " + index + ": " + fruit);
    index++;
}

7. 底層實現(xiàn)

增強型 for 循環(huán)的本質(zhì)是使用了 迭代器 來實現(xiàn)的。

偽代碼

對于 Iterable 對象:

for (Type element : collection) {
    Iterator<Type> it = collection.iterator();
    while (it.hasNext()) {
        Type element = it.next();
        // 循環(huán)體
    }
}

對于數(shù)組:

for (Type element : array) {
    for (int i = 0; i < array.length; i++) {
        Type element = array[i];
        // 循環(huán)體
    }
}

8. 總結(jié)

優(yōu)點

  • 簡化代碼:適合大多數(shù)迭代場景,避免手動處理索引和迭代器。
  • 可讀性高:語法簡潔,專注于元素處理。

缺點

  • 不能直接操作索引。
  • 不支持修改集合結(jié)構。
  • 適用于順序訪問,不適合隨機訪問場景。

增強型 for 循環(huán)是 Java 中對迭代器模式的進一步抽象,它讓遍歷變得更加簡單、高效,是開發(fā)中非常常用的工具。

到此這篇關于java 增強型for循環(huán) 詳解的文章就介紹到這了,更多相關java 增強型for循環(huán)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java異常處理Guava?Throwables類使用實例解析

    Java異常處理Guava?Throwables類使用實例解析

    這篇文章主要為大家介紹了Java異常處理神器Guava?Throwables類使用深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • SpringBoot快速入門及起步依賴解析(實例詳解)

    SpringBoot快速入門及起步依賴解析(實例詳解)

    SpringBoot?是由?Pivotal?團隊提供的全新框架,其設計目的是用來簡化?Spring?應用的初始搭建以及開發(fā)過程,這篇文章主要介紹了SpringBoot快速入門及起步依賴解析,需要的朋友可以參考下
    2022-10-10
  • Java多線程 volatile關鍵字詳解

    Java多線程 volatile關鍵字詳解

    這篇文章主要介紹了Java多線程 volatile關鍵字詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • SpringMVC集成FastJson使用流程詳解

    SpringMVC集成FastJson使用流程詳解

    如果你使用 Spring MVC 來構建 Web 應用并對性能有較高的要求的話,可以使用 Fastjson 提供的FastJsonHttpMessageConverter 來替換 Spring MVC 默認的 HttpMessageConverter 以提高 @RestController @ResponseBody @RequestBody 注解的 JSON序列化速度
    2023-02-02
  • MyBatisPlus之高級查詢用法及說明

    MyBatisPlus之高級查詢用法及說明

    本文詳細介紹了MyBatisPlus的高級查詢函數(shù),包括eq、ne、gt、gte、lt、lte、between、notBetween等、like、notLike等、inLeft、isNull、isNotNull、in、NotIn、InSql、NotInSql、GroupBy、OrderBy、Having、Apply、Exists、NotExists、Nested等等查詢
    2026-05-05
  • java 實現(xiàn)KMP算法

    java 實現(xiàn)KMP算法

    這篇文章主要介紹了java 如何實現(xiàn)KMP算法,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-12-12
  • Java8中LocalDateTime與時間戳timestamp的互相轉(zhuǎn)換

    Java8中LocalDateTime與時間戳timestamp的互相轉(zhuǎn)換

    這篇文章主要給大家介紹了關于Java8中LocalDateTime與時間戳timestamp的互相轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • mybatis-plus根據(jù)指定字段批量,刪除、修改實現(xiàn)過程

    mybatis-plus根據(jù)指定字段批量,刪除、修改實現(xiàn)過程

    本文介紹了三種MyBatis-Plus進行批量刪除和修改的方法,第一種是避免手寫SQL,第二種是手動獲取SqlSessionTemplate,第三種是重寫executeBatch方法,雖然批量處理效率較低,但對于不追求性能且不想手寫SQL的場景,可以嘗試這種方法
    2026-04-04
  • springboot注解Aspect實現(xiàn)方案

    springboot注解Aspect實現(xiàn)方案

    本文提供一種自定義注解,來實現(xiàn)業(yè)務審批操作的DEMO,不包含審批流程的配置功能。對springboot注解Aspect實現(xiàn)方案感興趣的朋友一起看看吧
    2022-01-01
  • 如何用SpringBoot 進行測試

    如何用SpringBoot 進行測試

    這篇文章主要介紹了如何用SpringBoot 進行測試,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11

最新評論

阿拉尔市| 斗六市| 太湖县| 临汾市| 准格尔旗| 峨山| 武清区| 临高县| 钟祥市| 建德市| 新乐市| 通化县| 仁布县| 清流县| 阳信县| 永年县| 乌什县| 宜宾县| 玉林市| 潜山县| 望奎县| 肥西县| 南平市| 常山县| 鹤峰县| 凯里市| 亚东县| 马山县| 蒲江县| 岑溪市| 阿拉善盟| 淳化县| 丰台区| 昭通市| 城固县| 黄陵县| 龙海市| 祁阳县| 利津县| 邯郸市| 青田县|