1

簡単なforステートメントは次のようになります。

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


 ForInit:
 StatmentExpressionList
 LocalVariableDecleration

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

シーケンス内の各式は左から右に評価され、いずれかの式が突然完了すると、forステートメントが突然完了し、シーケンスの評価は完了した場所から終了します。左から右に評価される式の値は破棄されます。

では、式が突然完了する原因は何でしょうか。シーケンス内の各式を評価するどの段階で、その式の値が破棄されますか。また、その式の値が破棄された場合、残りのforループはどのように実行されますか?

4

2 に答える 2

2

最初のパラメーターの例

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

2番目のパラメーターの場合

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

そして3番目のために(あなたはそれを推測できますか?)

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
于 2012-07-25T21:39:15.200 に答える
1

バリアントは次のようになります。

int a = getA(); //returns 0
for (int i = 10 / a; i < 5; i++) { //Ooops
}
于 2012-07-25T21:43:14.167 に答える