forステートメント
日本語 | ~まで命令 |
英語 | for statement |
ふりがな | ふぉーすてーとめんと |
フリガナ | フォーステートメント |
forを使用した繰り返し文。
ステートメントの一種。
予約語「for」を用いたステートメント。
「ループ」を行うステートメントのひとつ。
「for( 初期化; 評価式; 更新 )ステートメント」という形式で記述する。
処理の順番は「初期化」→「評価式」→「ステートメント」→「更新」となる。
「更新」後、「評価式」の評価を行い、その結果がtrueの場合、再度「ステートメント」→「更新」が処理される。
その繰り返しによって、ループが行われる。
「初期化」には以下のいずれかを記述することができる。
・ローカル変数宣言
・式ステートメント
宣言された変数のスコープは、forステートメント内のみとなる。つまり「初期化」「評価式」「更新」「ステートメント」内でのみ使用可能である。
式ステートメントは複数記述することができ、その場合には「,」を使用する。
省略することも可能。
「評価式」には「式ステートメント」を記述することができる。
ただし、式ステートメントはboolean型を返す式でなければならない。
省略することも可能。省略した場合、評価結果は常にtrueとなる。
「更新」には「式ステートメント」を記述することができる。
式ステートメントは複数記述することができ、その場合には「,」を使用する。
省略することも可能。
「ステートメント」にはステートメントを記述することができる。
通常はブロックを記述する。
ステートメントには「breakステートメント」「continueステートメント」を記述することができる。ラベルを指定しない場合、共にこのforステートメントがターゲットとなる。
forステートメントの使用方法については以下の項目も参照のこと。
・for
・break(breakステートメント)
・continue(continueステートメント)
ステートメントの一種。
予約語「for」を用いたステートメント。
「ループ」を行うステートメントのひとつ。
「for( 初期化; 評価式; 更新 )ステートメント」という形式で記述する。
処理の順番は「初期化」→「評価式」→「ステートメント」→「更新」となる。
「更新」後、「評価式」の評価を行い、その結果がtrueの場合、再度「ステートメント」→「更新」が処理される。
その繰り返しによって、ループが行われる。
「初期化」には以下のいずれかを記述することができる。
・ローカル変数宣言
・式ステートメント
宣言された変数のスコープは、forステートメント内のみとなる。つまり「初期化」「評価式」「更新」「ステートメント」内でのみ使用可能である。
式ステートメントは複数記述することができ、その場合には「,」を使用する。
省略することも可能。
「評価式」には「式ステートメント」を記述することができる。
ただし、式ステートメントはboolean型を返す式でなければならない。
省略することも可能。省略した場合、評価結果は常にtrueとなる。
「更新」には「式ステートメント」を記述することができる。
式ステートメントは複数記述することができ、その場合には「,」を使用する。
省略することも可能。
「ステートメント」にはステートメントを記述することができる。
通常はブロックを記述する。
ステートメントには「breakステートメント」「continueステートメント」を記述することができる。ラベルを指定しない場合、共にこのforステートメントがターゲットとなる。
forステートメントの使用方法については以下の項目も参照のこと。
・for
・break(breakステートメント)
・continue(continueステートメント)
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 最も単純なforステートメント。
for( int iF1 = 0; iF1 < 5; ++iF1 ) ;
// 処理順は「初期化」→「評価式」→「ステートメント」
// →「更新」→「評価式」→「ステートメント」→「更新」→...
// →「ステートメント」→「更新」→「評価式」です。
for
( System.out.println( "初期化 : " + count )
; evaluate() // 評価式
; ++count, System.out.println( "更新 : " + count )
)
System.out.println( "ステートメント : " + count )
;
// 初期化 : 0
// 評価式 : 0
// ステートメント : 0
// 更新 : 1
// 評価式 : 1
// ステートメント : 1
// 更新 : 2
// 評価式 : 2
// ステートメント : 2
// 更新 : 3
// 評価式 : 3
// 以下が「初期化」の部分です。
// ← ここ →
for( int iF1 = 0; iF1 < 5; ++iF1 ) ;
// 通常は、ローカル変数宣言を行い、同時に初期化します。
for( int iF1 = 0; iF1 < 5; ++iF1 )
{
// 宣言したローカル変数には、forステートメント内でのみ
// アクセスできます。
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// forステートメントの外では、「初期化」内で宣言した
// 変数にアクセスできません。スコープの外だからです。
// iF1 = 100;
// コンパイルエラー:
// iF1 は解決できません。
// 式ステートメントを記述することもできます。
// 複数記述する場合には「,」を使用します。
int i;
// 代入ステートメント
// ↓ プリインクリメントステートメント
// ↓ ↓
for( i = 1, ++i; i < 5; ++i )
{
System.out.print( i + ", " );
}
System.out.println();
// 2, 3, 4,
// それ以外、たとえばブロックは記述できません。
// for( {}; ; ) ;
// コンパイルエラー:
// トークン "{" に構文エラーがあります。正しくは ";" です。
// 必要なければ省略することもできます。
i = 0;
for( ; i < 5; ++i )
{
System.out.print( i + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// 以下が「評価式」の部分です。
// ←ここ→
for( int iF1 = 0; iF1 < 5; ++iF1 ) ;
// 通常は、「初期化」で宣言した変数が一定数以下か
// 比較します。trueの間、繰り返します。
// 「評価式」で「5未満」の場合true、とすることで
// 5回繰り返します。
for( int iF1 = 0; iF1 < 5; ++iF1 )
{
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// 式ステートメントを記述できますが、boolean型を
// 返さない式ステートメントは記述できません。
// for( ; ++i; ) ;
// コンパイルエラー:
// 型の不一致: int から boolean には変換できません。
// 必要なければ省略することもできます。
// その場合、常にtrueとなります。
for( int iF1 = 0; ; ++iF1 )
{
if( iF1 >= 5 )
{
break;
}
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// 以下が「更新」の部分です。
// ←ここ→
for( int iF1 = 0; iF1 < 5; ++iF1 ) ;
// 通常は、「初期化」で宣言した変数を
// インクリメントします。
for( int iF1 = 0; iF1 < 5; ++iF1 )
{
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// 「更新」には式ステートメントならなんでも記述できます。
for( int iF1 = 0; iF1 < 5; System.out.print( "(更新)" ) )
{
System.out.print( iF1 + ", " );
++iF1;
}
System.out.println();
// 0, (更新)1, (更新)2, (更新)3, (更新)4, (更新)
// 複数記述する場合には「,」を使用します。
// プリインクリメントステートメント
// ↓ メソッド呼び出しステートメント
// ↓ ↓
for( int iF1 = 0; iF1 < 5; ++iF1, System.out.print( "(更新)" ) )
{
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, (更新)1, (更新)2, (更新)3, (更新)4, (更新)
// 必要なければ省略することもできます。
for( int iF1 = 0; iF1 < 5; )
{
System.out.print( iF1 + ", " );
++iF1;
}
System.out.println();
// 0, 1, 2, 3, 4,
// forの後ろの部分が「ステートメント」です。
for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ System.out.print( iF1 + ", " ); // ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
// 通常は、「ステートメント」にはブロックを記述します。
for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */
{
System.out.print( iF1 + ", " );
++iF1;
}// ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
// 「ステートメント」にはステートメントであれば何でも記述できます。 ↓代入ステートメントです。
for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ i = 100; // ←ここまで「ステートメント」。
System.out.println();
// 記述できるステートメントはひとつです。
// 以下のように「,」で複数記述することはできないため、通常は
// ブロックを記述します。
// for( int iF1 = 0; iF1 < 5; ++iF1 ) i = 100, ++i;
// コンパイルエラー:
// トークン "," に構文エラーがあります。正しくは ";" です。
// 「ステートメント」を省略することはできません。
// for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ // ←ここまで「ステートメント」。
// コンパイルエラー:
// トークン "}" に構文エラーがあります。正しくは "{" です。
}
// 処理順をチェックするためのフィールド。
static int count = 0;
// 処理順をチェックするためのメソッド。
private static boolean evaluate()
{
System.out.println( "評価式 : " + count );
if( count == 3 )
{
// countが3になったらfalseを返します。
return false;
}
return true;
}
}
public class Sample
{
public static void main( String[] args )
{
// 最も単純なforステートメント。
for( int iF1 = 0; iF1 < 5; ++iF1 ) ;
// 処理順は「初期化」→「評価式」→「ステートメント」
// →「更新」→「評価式」→「ステートメント」→「更新」→...
// →「ステートメント」→「更新」→「評価式」です。
for
( System.out.println( "初期化 : " + count )
; evaluate() // 評価式
; ++count, System.out.println( "更新 : " + count )
)
System.out.println( "ステートメント : " + count )
;
// 初期化 : 0
// 評価式 : 0
// ステートメント : 0
// 更新 : 1
// 評価式 : 1
// ステートメント : 1
// 更新 : 2
// 評価式 : 2
// ステートメント : 2
// 更新 : 3
// 評価式 : 3
// 以下が「初期化」の部分です。
// ← ここ →
for( int iF1 = 0; iF1 < 5; ++iF1 ) ;
// 通常は、ローカル変数宣言を行い、同時に初期化します。
for( int iF1 = 0; iF1 < 5; ++iF1 )
{
// 宣言したローカル変数には、forステートメント内でのみ
// アクセスできます。
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// forステートメントの外では、「初期化」内で宣言した
// 変数にアクセスできません。スコープの外だからです。
// iF1 = 100;
// コンパイルエラー:
// iF1 は解決できません。
// 式ステートメントを記述することもできます。
// 複数記述する場合には「,」を使用します。
int i;
// 代入ステートメント
// ↓ プリインクリメントステートメント
// ↓ ↓
for( i = 1, ++i; i < 5; ++i )
{
System.out.print( i + ", " );
}
System.out.println();
// 2, 3, 4,
// それ以外、たとえばブロックは記述できません。
// for( {}; ; ) ;
// コンパイルエラー:
// トークン "{" に構文エラーがあります。正しくは ";" です。
// 必要なければ省略することもできます。
i = 0;
for( ; i < 5; ++i )
{
System.out.print( i + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// 以下が「評価式」の部分です。
// ←ここ→
for( int iF1 = 0; iF1 < 5; ++iF1 ) ;
// 通常は、「初期化」で宣言した変数が一定数以下か
// 比較します。trueの間、繰り返します。
// 「評価式」で「5未満」の場合true、とすることで
// 5回繰り返します。
for( int iF1 = 0; iF1 < 5; ++iF1 )
{
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// 式ステートメントを記述できますが、boolean型を
// 返さない式ステートメントは記述できません。
// for( ; ++i; ) ;
// コンパイルエラー:
// 型の不一致: int から boolean には変換できません。
// 必要なければ省略することもできます。
// その場合、常にtrueとなります。
for( int iF1 = 0; ; ++iF1 )
{
if( iF1 >= 5 )
{
break;
}
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// 以下が「更新」の部分です。
// ←ここ→
for( int iF1 = 0; iF1 < 5; ++iF1 ) ;
// 通常は、「初期化」で宣言した変数を
// インクリメントします。
for( int iF1 = 0; iF1 < 5; ++iF1 )
{
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, 1, 2, 3, 4,
// 「更新」には式ステートメントならなんでも記述できます。
for( int iF1 = 0; iF1 < 5; System.out.print( "(更新)" ) )
{
System.out.print( iF1 + ", " );
++iF1;
}
System.out.println();
// 0, (更新)1, (更新)2, (更新)3, (更新)4, (更新)
// 複数記述する場合には「,」を使用します。
// プリインクリメントステートメント
// ↓ メソッド呼び出しステートメント
// ↓ ↓
for( int iF1 = 0; iF1 < 5; ++iF1, System.out.print( "(更新)" ) )
{
System.out.print( iF1 + ", " );
}
System.out.println();
// 0, (更新)1, (更新)2, (更新)3, (更新)4, (更新)
// 必要なければ省略することもできます。
for( int iF1 = 0; iF1 < 5; )
{
System.out.print( iF1 + ", " );
++iF1;
}
System.out.println();
// 0, 1, 2, 3, 4,
// forの後ろの部分が「ステートメント」です。
for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ System.out.print( iF1 + ", " ); // ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
// 通常は、「ステートメント」にはブロックを記述します。
for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */
{
System.out.print( iF1 + ", " );
++iF1;
}// ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
// 「ステートメント」にはステートメントであれば何でも記述できます。 ↓代入ステートメントです。
for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ i = 100; // ←ここまで「ステートメント」。
System.out.println();
// 記述できるステートメントはひとつです。
// 以下のように「,」で複数記述することはできないため、通常は
// ブロックを記述します。
// for( int iF1 = 0; iF1 < 5; ++iF1 ) i = 100, ++i;
// コンパイルエラー:
// トークン "," に構文エラーがあります。正しくは ";" です。
// 「ステートメント」を省略することはできません。
// for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ // ←ここまで「ステートメント」。
// コンパイルエラー:
// トークン "}" に構文エラーがあります。正しくは "{" です。
}
// 処理順をチェックするためのフィールド。
static int count = 0;
// 処理順をチェックするためのメソッド。
private static boolean evaluate()
{
System.out.println( "評価式 : " + count );
if( count == 3 )
{
// countが3になったらfalseを返します。
return false;
}
return true;
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 最も単純なforステートメント。 for( int iF1 = 0; iF1 < 5; ++iF1 ) ; // 処理順は「初期化」→「評価式」→「ステートメント」 // →「更新」→「評価式」→「ステートメント」→「更新」→... // →「ステートメント」→「更新」→「評価式」です。 for ( System.out.println( "初期化 : " + count ) ; evaluate() // 評価式 ; ++count, System.out.println( "更新 : " + count ) ) System.out.println( "ステートメント : " + count ) ; // 初期化 : 0 // 評価式 : 0 // ステートメント : 0 // 更新 : 1 // 評価式 : 1 // ステートメント : 1 // 更新 : 2 // 評価式 : 2 // ステートメント : 2 // 更新 : 3 // 評価式 : 3 // 以下が「初期化」の部分です。 // ← ここ → for( int iF1 = 0; iF1 < 5; ++iF1 ) ; // 通常は、ローカル変数宣言を行い、同時に初期化します。 for( int iF1 = 0; iF1 < 5; ++iF1 ) { // 宣言したローカル変数には、forステートメント内でのみ // アクセスできます。 System.out.print( iF1 + ", " ); } System.out.println(); // 0, 1, 2, 3, 4, // forステートメントの外では、「初期化」内で宣言した // 変数にアクセスできません。スコープの外だからです。 // iF1 = 100; // コンパイルエラー: // iF1 は解決できません。 // 式ステートメントを記述することもできます。 // 複数記述する場合には「,」を使用します。 int i; // 代入ステートメント // ↓ プリインクリメントステートメント // ↓ ↓ for( i = 1, ++i; i < 5; ++i ) { System.out.print( i + ", " ); } System.out.println(); // 2, 3, 4, // それ以外、たとえばブロックは記述できません。 // for( {}; ; ) ; // コンパイルエラー: // トークン "{" に構文エラーがあります。正しくは ";" です。 // 必要なければ省略することもできます。 i = 0; for( ; i < 5; ++i ) { System.out.print( i + ", " ); } System.out.println(); // 0, 1, 2, 3, 4, // 以下が「評価式」の部分です。 // ←ここ→ for( int iF1 = 0; iF1 < 5; ++iF1 ) ; // 通常は、「初期化」で宣言した変数が一定数以下か // 比較します。trueの間、繰り返します。 // 「評価式」で「5未満」の場合true、とすることで // 5回繰り返します。 for( int iF1 = 0; iF1 < 5; ++iF1 ) { System.out.print( iF1 + ", " ); } System.out.println(); // 0, 1, 2, 3, 4, // 式ステートメントを記述できますが、boolean型を // 返さない式ステートメントは記述できません。 // for( ; ++i; ) ; // コンパイルエラー: // 型の不一致: int から boolean には変換できません。 // 必要なければ省略することもできます。 // その場合、常にtrueとなります。 for( int iF1 = 0; ; ++iF1 ) { if( iF1 >= 5 ) { break; } System.out.print( iF1 + ", " ); } System.out.println(); // 0, 1, 2, 3, 4, // 以下が「更新」の部分です。 // ←ここ→ for( int iF1 = 0; iF1 < 5; ++iF1 ) ; // 通常は、「初期化」で宣言した変数を // インクリメントします。 for( int iF1 = 0; iF1 < 5; ++iF1 ) { System.out.print( iF1 + ", " ); } System.out.println(); // 0, 1, 2, 3, 4, // 「更新」には式ステートメントならなんでも記述できます。 for( int iF1 = 0; iF1 < 5; System.out.print( "(更新)" ) ) { System.out.print( iF1 + ", " ); ++iF1; } System.out.println(); // 0, (更新)1, (更新)2, (更新)3, (更新)4, (更新) // 複数記述する場合には「,」を使用します。 // プリインクリメントステートメント // ↓ メソッド呼び出しステートメント // ↓ ↓ for( int iF1 = 0; iF1 < 5; ++iF1, System.out.print( "(更新)" ) ) { System.out.print( iF1 + ", " ); } System.out.println(); // 0, (更新)1, (更新)2, (更新)3, (更新)4, (更新) // 必要なければ省略することもできます。 for( int iF1 = 0; iF1 < 5; ) { System.out.print( iF1 + ", " ); ++iF1; } System.out.println(); // 0, 1, 2, 3, 4, // forの後ろの部分が「ステートメント」です。 for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ System.out.print( iF1 + ", " ); // ←ここまで「ステートメント」。 System.out.println(); // 0, 1, 2, 3, 4, // 通常は、「ステートメント」にはブロックを記述します。 for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ { System.out.print( iF1 + ", " ); ++iF1; }// ←ここまで「ステートメント」。 System.out.println(); // 0, 1, 2, 3, 4, // 「ステートメント」にはステートメントであれば何でも記述できます。 ↓代入ステートメントです。 for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ i = 100; // ←ここまで「ステートメント」。 System.out.println(); // 記述できるステートメントはひとつです。 // 以下のように「,」で複数記述することはできないため、通常は // ブロックを記述します。 // for( int iF1 = 0; iF1 < 5; ++iF1 ) i = 100, ++i; // コンパイルエラー: // トークン "," に構文エラーがあります。正しくは ";" です。 // 「ステートメント」を省略することはできません。 // for( int iF1 = 0; iF1 < 5; ++iF1 )/* ここから「ステートメント」→ */ // ←ここまで「ステートメント」。 // コンパイルエラー: // トークン "}" に構文エラーがあります。正しくは "{" です。 } // 処理順をチェックするためのフィールド。 static int count = 0; // 処理順をチェックするためのメソッド。 private static boolean evaluate() { System.out.println( "評価式 : " + count ); if( count == 3 ) { // countが3になったらfalseを返します。 return false; } return true; } }