
Java入門|変数の初期化
宣言と同時に値を入れると、変数はもっとわかりやすく、もっと使いやすくなる
変数の宣言と代入を学ぶと、Javaではまず変数を用意し、そのあとで値を入れて使っていくことがわかります。この流れはとても大切な基本ですが、実際にはもう少しすっきり書ける場面もたくさんあります。そのときに登場するのが、変数の初期化です。
変数の初期化とは、変数を宣言すると同時に、最初の値を入れる書き方のことです。これを使うと、変数を用意する作業と、値を格納する作業を1文でまとめて書けます。コードが短くなるだけでなく、変数に値を入れ忘れるミスも防ぎやすくなるので、Javaではとてもよく使われる大切な書き方です。
特に学びはじめの段階では、変数を宣言したのに値を入れないまま使ってしまうことがあります。けれども、変数は中身がきちんと決まっていてこそ安全に使えます。初期化の考え方を身につけると、変数をより自然に、そして正しく扱えるようになります。
ここでは、初期化とは何か、宣言と代入とどう違うのか、なぜ便利なのか、そして値を入れないまま使おうとするとどうなるのかを、順番に丁寧に見ていきましょう。
初期化とは何か
初期化とは、変数を宣言したときに、同時に最初の値を入れることです。
これまで学んだ変数の基本では、まず宣言を行い、そのあとで別の文として代入を行っていました。たとえば、変数を用意してから、その次の文で値を入れるという流れです。この書き方も正しいのですが、Javaではそれを1文にまとめて書くことができます。
この、宣言と同時に値を格納する書き方を、初期化といいます。
初期化は、変数を使い始める時点で、その変数の中身をはっきり決めておくための方法です。言いかえると、変数を空の箱のままにせず、最初から値入りの状態で用意する書き方です。
宣言と代入を分ける書き方との違い
まずは、宣言と代入を分ける書き方を確認してみましょう。
int num;
num = 3;この2文では、最初の文で int型の変数 num を宣言しています。次の文で、その変数 num に 3 を代入しています。
つまり、変数を用意する作業と、値を入れる作業が別々になっています。
これに対して、初期化では次のように書きます。
int num = 3;こちらは、変数 num を宣言すると同時に、3 を入れています。
結果として行っていることは同じですが、書き方が1文にまとまっています。
この違いを整理すると、次のようになります。
| 書き方 | 内容 |
|---|---|
| int num; num = 3; | 宣言と代入を2文に分けて書く |
| int num = 3; | 宣言と代入を1文にまとめて書く |
どちらも変数 num に 3 を入れるという点では同じですが、初期化のほうが流れがすっきりしていて、読みやすくなります。
初期化の基本構文
変数の初期化は、次の形で書きます。
変数の初期化
型名 識別子 = 式;ここでも、型名と識別子を指定し、最後にセミコロンをつけます。
そして、= の右側に、その変数に最初に入れたい値を書きます。
この形を見ると、宣言の構文に代入の形が加わったようになっていることがわかります。つまり、初期化は、宣言と代入をひとつにまとめた書き方だと考えると理解しやすいです。
初期化のよさは「使い始めが明確になる」こと
初期化の大きなよさは、変数を使い始める時点で、その変数の値がはっきりしていることです。
変数は、ただ宣言しただけでは、まだ使う準備が十分に整っているとはいえません。値を入れてはじめて、その変数は具体的な意味を持って使えるようになります。初期化を使うと、宣言したその瞬間に値も決まるので、とても自然な流れになります。
たとえば、ある変数が最初から 3 で始まると決まっているなら、その場で初期化しておくほうがわかりやすいです。あとから別の場所で代入するよりも、変数がどういう値から始まるのかを、その1文だけで読み取れるからです。
これは、コードの読みやすさにもつながります。初期化された変数は、最初の状態がはっきりしているため、あとでコードを見返したときにも理解しやすくなります。
初期化は書き忘れを防ぎやすい
初期化が便利だといわれる大きな理由のひとつが、値の代入忘れを防ぎやすいことです。
宣言と代入を2文に分けると、宣言だけを書いて満足してしまい、そのあとに値を入れる文を書き忘れてしまうことがあります。特に学習の初期段階では、このようなミスが起こりやすいです。
たとえば、変数を用意したあとで、別の処理を書くうちに代入の文を入れ忘れてしまうことがあります。すると、その変数を使おうとしたときに問題が起こります。
初期化を使えば、宣言と同時に値も入るため、この書き忘れが起こりにくくなります。最初から必要な値が決まっている変数なら、できるだけ初期化しておくほうが安全で、コードの意図も伝わりやすくなります。
値を入れないまま使おうとするとどうなるか
Javaでは、mainメソッドの中で宣言した変数に値を入れないまま使おうとすると、コンパイルエラーになります。
たとえば、変数を宣言しただけで、そのあとに値を代入せず、そのまま出力しようとすると問題になります。Javaは、その変数がまだ正しい値を持っていないと判断するためです。
これは、Javaが安全性を大切にしているからです。値が入っていない変数をそのまま使わせてしまうと、結果があいまいになったり、予想外の動作につながったりするおそれがあります。そのため、Javaでは、きちんと値が入っていることを確認できない変数は使えないようになっています。
このしくみは少し厳しく感じるかもしれませんが、実はとても親切です。値の入れ忘れを早い段階で見つけてくれるので、プログラムのミスを減らしやすくなります。
なぜエラーになるのかをイメージで理解する
値を入れていない変数を出力しようとするとエラーになるのは、その変数の中身がまだ決まっていないからです。
変数を箱にたとえるなら、宣言だけした状態では箱が用意されたにすぎません。まだ中には何も入っていない状態です。その箱の中身を見せてくださいと言われても、見せるべき値がありません。Javaはその状態を許さず、使う前にきちんと値を入れてくださいと教えてくれます。
この考え方を身につけておくと、初期化の意味がよりはっきり見えてきます。初期化とは、空の箱を最初から中身入りの状態で用意することなのです。
図でイメージする初期化

この図では、int num = 3; という1文によって、変数 num が用意されると同時に、その中に 3 が入ることを表しています。
ここで押さえておきたいのは、宣言と代入が別々ではなく、1つの文の中で同時に行われていることです。
このイメージを持っておくと、初期化は単に短く書くための工夫ではなく、変数を安全に使いやすくするための大事な書き方だとわかってきます。
宣言だけの状態と初期化した状態を比べる
初期化の意味をよりはっきりさせるために、宣言だけの状態と、初期化した状態を比べてみましょう。
| 状態 | 変数の様子 |
|---|---|
| 宣言だけした状態 | 変数の場所は用意されているが、値はまだ決まっていない |
| 初期化した状態 | 変数の場所が用意され、最初の値も入っている |
この違いはとても大きいです。
宣言だけでは、まだ変数を安心して使えるとは限りません。
一方で、初期化してあれば、その変数はすでに具体的な値を持っているので、すぐに利用しやすくなります。
このように比べると、初期化は変数を完成した状態でスタートさせるための方法だといえます。
図でイメージする「宣言だけ」と「初期化」

この図では、左に宣言だけした変数、右に初期化した変数を並べています。左側は箱だけが用意されていて、右側は箱の中にすでに値が入っています。
この対比を見ると、初期化がどれだけ便利でわかりやすいかが見えてきます。変数は使う前に正しい値を持っていることが大切なので、最初から値を入れておける初期化は、とても実用的な書き方です。
初期化はコードを読みやすくする
初期化は、エラーを防ぐだけでなく、コードそのものも読みやすくしてくれます。
変数の宣言と代入が離れた場所に書かれていると、その変数が最初にどんな値を持っていたのかを追いかける必要があります。けれども、初期化されていれば、変数が宣言されたその場で最初の値がわかります。これは、読む人にとってとても親切です。
特にプログラムが長くなってくると、変数の最初の状態がどこで決まったのかが重要になります。初期化を使うことで、その情報を1か所にまとめておけるので、コード全体が整理されて見えやすくなります。
初期化は「最初の値を決める」こと
ここであらためて意識しておきたいのは、初期化とは最初の値を決めることだという点です。
変数は、その後で別の値に変わることもあります。けれども、使い始める時点では、まず最初の値が必要です。その最初の値をはっきり決めておくことで、プログラムの流れが安定します。
つまり、初期化は単なる省略ではありません。変数をどの値からスタートさせるのかを明確にする、大事な意味を持った書き方です。
変数の初期化を身につけると次の学習が楽になる
変数の初期化をしっかり理解しておくと、このあと学ぶ計算や入力処理にもつながりやすくなります。
たとえば、最初の値を入れた状態から処理を始める考え方は、カウンタのような変数を使うときにも役立ちますし、あとで学ぶ式の理解にもつながります。また、変数は使う前に適切な値を持っていなければならない、という感覚も自然に身についてきます。
変数の宣言、代入、初期化は、それぞれ別の話のように見えて、実はとても深くつながっています。特に初期化は、その3つの流れをすっきりまとめた便利な書き方です。ここでしっかり意味をつかんでおくと、Javaのコードがより読みやすく、より自然に感じられるようになってきます。
