【初心者必見】Javaの繰り返し処理での変数宣言、どこで書くべき?

こんにちは。ゆうせいです。

今回は「繰り返しの中で変数を宣言すべきか、外で宣言すべきか?」という、Javaを使う上で初心者がよく悩むポイントについて、わかりやすく解説していきます。


変数の宣言場所ってそんなに大事?

はい、大事です!

一見ただの「コードの場所の違い」に見えるかもしれませんが、処理速度メモリ効率可読性などに影響します。間違った場所に書いてしまうと、意図しないバグの原因になることもあるんです。

では、まず基本的な構文から確認しましょう。


Javaの繰り返し構文のおさらい

Javaでよく使われる繰り返し処理といえば以下のようなものがあります:

for (int i = 0; i < 10; i++) {
    // 繰り返し処理
}

この中で「変数をどこで宣言するか」が今回のテーマです。


例で見てみよう:繰り返しの中 vs 外

① ループの中で宣言する場合

for (int i = 0; i < 10; i++) {
    String message = "こんにちは";
    System.out.println(message);
}

毎回ループのたびにmessageという変数が新しく作られます。

メリット:

  • 他の処理に影響しない(スコープが狭い)。
  • ループの中でだけ使うならこちらが安全。

デメリット:

  • 毎回変数を作り直すので、ループの回数が多いとメモリ的に非効率。

② ループの外で宣言する場合

String message;
for (int i = 0; i < 10; i++) {
    message = "こんにちは";
    System.out.println(message);
}

messageは1つだけ作られて、ループのたびに値だけが代入されます。

メリット:

  • 毎回変数を新しく作らないため、パフォーマンスが少し良い。
  • ループ外でも使える。

デメリット:

  • 他の処理と変数が干渉する可能性がある(スコープが広い)。
  • ループ外でも誤って使ってしまうとバグになる。

じゃあ、結局どっちがいいの?

目的に応じて使い分けるのが正解です。

初心者向けのおすすめ:

  • ループの中だけで使う変数 → 中で宣言
  • ループの外でも使いたい変数 → 外で宣言

たとえば、こんな風に:

ループの中でしか使わない例:

for (int i = 0; i < 5; i++) {
    int square = i * i;
    System.out.println(square);
}

ループ終了後に使う例:

int lastSquare = 0;
for (int i = 0; i < 5; i++) {
    lastSquare = i * i;
}
System.out.println("最後の値は: " + lastSquare);


少しだけ深掘り:Javaのスコープとは?

スコープ(scope)とは「変数が使える範囲」のことです。

  • { } で囲まれたブロック内で宣言された変数は、基本的にその中だけで有効。
  • ブロックの外で使おうとすると、「見えない」=エラーになります。

これを理解すると、変数宣言の場所を自然と考えられるようになります。


今後の学習の指針

これからプログラミングを学んでいくうえで、以下のポイントを意識していくと力がつきます!

  • 変数のスコープを意識して書く癖をつけよう
  • 処理の目的に応じて、最適な宣言位置を選ぼう
  • パフォーマンスと安全性のバランスを考える力をつけよう

「どこで宣言しても動くけど、どこで宣言するのがベストか?」を常に考えるのが、プロフェッショナルなエンジニアへの第一歩です。

次は、「スコープとライフタイムの違い」についても学んでみると、さらに理解が深まりますよ!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。