首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 增強 for 循環語法解析:FileStore store : stores 中冒號的含義

     編輯:程式設計綜合問答

代碼片段:

Iterable<FileStore> stores = filesystem.getFileStores();
for (FileStore store : stores) {
    System.out.println(store.name());
}

這是 Java 5 引入的**增強 for 循環 (for-each loop)**,冒號 `:` 讀作 **"in"**,語義為「遍歷 `stores` 集合中的每一個元素,賦值給 `store`」。

語法結構

for (元素類型 元素變量 : 可迭代對象/數組) {
    // 循環體,元素變量為當前元素
}
  • 冒號左側:聲明**循環變量**,類型需與集合元素類型兼容 (此處 `FileStore`)。
  • 冒號右側:實現 `Iterable` 接口的對象、或**數組**。編譯器自動調用 `iterator()` 獲取迭代器。

等價的傳統寫法

Iterator<FileStore> it = stores.iterator();
while (it.hasNext()) {
    FileStore store = it.next();
    System.out.println(store.name());
}

適用範圍

  • 所有實現 `java.lang.Iterable` 的集合:`List`、`Set`、`Queue` 等。
  • 數組:`int[] arr = {1,2,3}; for (int x : arr) ...`
  • 不適用:需索引操作、反向遍歷、修改集合結構 (刪除元素) 等場景。

注意事項

  • 循環變量為**副本** (基本類型) 或**引用副本** (引用類型)。修改引用類型變量指向的對象內容有效,但重新賦值循環變量不影響集合原元素。
  • 遍歷中**不可**直接調用 `stores.remove()`,會拋 `ConcurrentModificationException`。需用 `Iterator.remove()` 或收集後批量刪除。
  • 性能與顯式迭代器基本一致,語法更簡潔。

參考資源

Java 增強 for 循環詳細解析

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved