|
CHAPTER 14: Blocks and Statements |
|
 Previous |
 Java Language |
 Index |
 Next |
14.12 The for Statement
14.12.1 Initialization
, 14.12.2 Iteration
, 14.12.3 Abrupt Completion
The for
statement executes some initialization code, then executes an Expression, a Statement, and some update code repeatedly until the value of the Expression is false
.
ForStatement:
for ( ForInitopt ; Expressionopt ; ForUpdateopt )
Statement
ForStatementNoShortIf:
for ( ForInitopt ; Expressionopt ; ForUpdateopt )
StatementNoShortIf
ForInit:
StatementExpressionList
LocalVariableDeclaration
ForUpdate:
StatementExpressionList
StatementExpressionList:
StatementExpression
StatementExpressionList , StatementExpression
The Expression must have type boolean
, or a compile-time error occurs.
A for
statement is executed by first executing the ForInit code:
- If the ForInit code is a list of statement expressions (S14.7), the expressions are evaluated in sequence from left to right; their values, if any, are discarded. If evaluation of any expression completes abruptly for some reason, the for
statement completes abruptly for the same reason; any ForInit statement expressions to the right of the one that completed abruptly are not evaluated.
- If the ForInit code is a local variable declaration, it is executed as if it were a local variable declaration statement (S14.3) appearing in a block. In this case, the scope of a declared local variable is its own initializer and any further declarators in the ForInit part, plus the Expression, ForUpdate, and contained Statement of the for
statement. If execution of the local variable declaration completes abruptly for any reason, the for
statement completes abruptly for the same reason.
- If the ForInit part is not present, no action is taken.
Next, a for
iteration step is performed, as follows:
- If the Expression is present, it is evaluated, and if evaluation of the Expression completes abruptly, the for
statement completes abruptly for the same reason. Otherwise, there is then a choice based on the presence or absence of the Expression and the resulting value if the Expression is present:
- If the Expression is not present, or it is present and the value resulting from its evaluation is true
, then the contained Statement is executed. Then there is a choice:
- If execution of the Statement completes normally, then the following two steps are performed in sequence:
- First, if the ForUpdate part is present, the expressions are evaluated in sequence from left to right; their values, if any, are discarded. If evaluation of any expression completes abruptly for some reason, the for
statement completes abruptly for the same reason; any ForUpdate statement expressions to the right of the one that completed abruptly are not evaluated. If the ForUpdate part is not present, no action is taken.
- Second, another for
iteration step is performed.
- If execution of the Statement completes abruptly, see S14.12.3 below.
- If the Expression is present and the value resulting from its evaluation is false
, no further action is taken and the for
statement completes normally.
If the value of the Expression is false
the first time it is evaluated, then the Statement is not executed.
If the Expression is not present, then the only way a for
statement can complete normally is by use of a break
statement.
Abrupt completion of the contained Statement is handled in the following manner:
- If execution of the Statement completes abruptly because of a break
with no label, no further action is taken and the for
statement completes normally.
- If execution of the Statement completes abruptly because of a continue
with no label, then the following two steps are performed in sequence:
- First, if the ForUpdate part is present, the expressions are evaluated in sequence from left to right; their values, if any, are discarded. If the ForUpdate part is not present, no action is taken.
- Second, another for
iteration step is performed.
- If execution of the Statement completes abruptly because of a continue
with label L, then there is a choice:
- If the for
statement has label L, then the following two steps are performed in sequence:
- First, if the ForUpdate part is present, the expressions are evaluated in sequence from left to right; their values, if any, are discarded. If the ForUpdate is not present, no action is taken.
- Second, another for
iteration step is performed.
- If the for
statement does not have label L, the for
statement completes abruptly because of a continue
with label L.
- If execution of the Statement completes abruptly for any other reason, the for
statement completes abruptly for the same reason. Note that the case of abrupt completion because of a break
with a label is handled by the general rule for labeled statements (S14.6).
 | © 1996 Sun Microsystems, Inc. All rights reserved. |