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

Java for/while 循環等價轉換規則:for (a;b;c) {d} ⇔ a; while(b) {d; c} 及 for-each 轉換

     編輯:程式設計疑難解答

標準 for 循環 ⇔ while 循環


// for 循環
for (init; condition; increment) {
    body;
}

// 等價 while 循環
init;
while (condition) {
    body;
    increment;
}

for-each (增強 for) ⇔ while 循環 (迭代器模式)


// for-each
for (Type item : collection) {
    body;
}

// 等價 while (編譯器實際生成代碼)
Iterator<Type> it = collection.iterator();
while (it.hasNext()) {
    Type item = it.next();
    body;
}

while ⇔ for 反向轉換


// while
while (condition) {
    body;
}

// 等價 for
for (; condition; ) {
    body;
}

空語句合法性

以下四種形式**全部合法**:


while (condition) ;           // 空循環體
while (condition) { }         // 空塊
for (init; condition; inc) ;  // 空循環體
for (init; condition; inc) { } // 空塊

題目選項分析

選項正確性理由
a. for 可轉 while,while 可轉 for✅ 正確雙向等價轉換成立
b. 視出題者意圖(模糊)⚠️ 不確定非標準判斷依據
c. for-each 可轉 while (iterator)✅ 正確編譯器確實如此生成
d. 絕對錯誤❌ 錯誤空語句/空塊均合法

考試/面試答題口訣

「for 三段式展開成 while,for-each 展開成 iterator 迴圈,while 收攏成 for(;;),空語句空塊都合法,選 a 和 c。」

進階:標籤配合 break/continue


outer: for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        if (condition) break outer; // 跳出雙層
    }
}
// while 版本需配合標籤同樣實現
outer: while (i < 10) { ... }

掌握循環結構互化本質,閱讀他人代碼、編寫編譯器優化、應試答題皆得心應手。

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