簡體   English   中英

如果在刪除的for語句中使用StatementExpressionList,ForInit的值是什么時候?

[英]When are the values of the ForInit if a StatementExpressionList is used in a for statement discared?

一個簡單的陳述是:

 for(ForInit/*Optional*/; EXPRESSION/*Optional*/; ForUpdate/*Optional*/) {
 }


 ForInit:
 StatmentExpressionList
 LocalVariableDecleration

 StatmentExpressionList
 e.g 
    int i = 0; a = 10, z = 2;

從左到右計算序列中的每個表達式,如果任何表達式突然完成,則for語句突然完成,並且序列的評估從它完成的位置結束。 從左到右評估的任何表達式的值都被丟棄。

那么什么會導致表達突然完成? 在評估序列中每個表達式的哪個階段,該表達式的值被丟棄,並且該表達式的值是否被丟棄,而for循環的其余部分是如何執行的?

第一個參數的示例

String a = null;
for (int i = a.length(); i < 5; i++) 

對於第二個參數

String a = null;
for (int i = 1; i < a.length(); i++)

對於第三個(你能猜到嗎?)

String a = null;
for (int i = 1; i < 5; a.append(" "));

當然,循環的其余部分不會被執行。

更新:我將對“廢棄值”的引用(現在無法檢查)解釋為:

int i = 13;
try {
  String a = null;
  for (int i = 1; i < a.length(); i++)
  ...
} catch (Exception e) {
}

// Here i = 13

一個變體是:

int a = getA(); //returns 0
for (int i = 10 / a; i < 5; i++) { //Ooops
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM