ステートメントの Java 言語仕様を見てfor
ください。ループ内で任意の型の変数を宣言して初期化できfor
ます。また、すべて同じ型である限り、複数の変数を宣言することもできます。文法の関連する生産は次のとおりです。
BasicForStatement:
for ( ForInitopt ; Expressionopt ; ForUpdateopt ) Statement
ForInit:
StatementExpressionList
LocalVariableDeclaration
LocalVariableDeclaration:
VariableModifiersopt Type VariableDeclarators
VariableDeclarators:
VariableDeclarator
VariableDeclarators , VariableDeclarator
これは、次のいずれかを実行できることを意味します。
for ( ; … ; … ) // no variable declaration at all
for ( int i; … ; … ) // variable declaration with no initial value
for ( int i=0; … ; … ) // variable declaration with initial value
for ( int i=0, j=1; … ; … ) // multiple variables
for ( final Iterator<T> it = …; … ; … ) // final variable
そこの最初の例は、変数がまったく必要ないことを示しており、コメントで指摘されているように、いずれかを持つ必要はありませんForUpdate
。唯一の制約は、中間に式が必要であり、ブール値の式である必要があることです。
余談ですが、 を にするForInit
こともできますStatementExpressionList
。つまり、変数を宣言して初期化する代わりに、いくつかのステートメントを実行することもできます。たとえば、次のようにすることもできます (ただし、これは特に役立つ例ではありません)。
for ( System.out.println( "beginning loop" ; … ; … )
これは、本体が単純な関数呼び出しである場合、ループをシミュレートする際に役立つと思いdo/while
ます (やりたい場合)。
for ( method() ; condition ; method() );