Java入門|変数の宣言と代入

変数を使えるようになると、Javaのコードが自分の手で動きはじめる

これまでの学習では、文字や数値をそのまま画面に表示する方法を見てきました。ここからは、いよいよプログラムの中で値を記憶し、その値を使いながら処理を進めるための基本を学んでいきます。その中心になるのが、変数の宣言と代入です。

変数は、値を入れておくための箱のようなものとして考えることができます。ただし、変数は最初から使えるわけではありません。Javaでは、まずどのような型の、どのような名前の変数を使うのかを決めて、コードの中で用意する必要があります。この作業が宣言です。そして、用意した変数に実際の値を入れることを代入といいます。

この宣言と代入ができるようになると、プログラムは単に決まった文字を表示するだけではなく、いったん値を覚えておき、その値をあとで表示したり、計算に使ったりできるようになります。つまり、ここからJavaらしいプログラムの書き方が少しずつ見えてくることになります。

最初は、宣言、代入、出力という3つの流れをひとまとまりでつかむことが大切です。順番に見ていくと、それぞれの役割が自然に理解できるようになります。ここでは、変数をどのように用意し、どのように値を入れ、どのようにその値を表示するのかを、丁寧に見ていきましょう。

変数を使う前に必要な「宣言」

変数を使うには、まずその変数をコードの中で使える状態にしなければなりません。この作業が、変数の宣言です。

宣言とは、これからこの名前の変数を、この型で使いますとJavaに伝えることです。変数は、思いついた名前をいきなり書けば使えるというものではありません。Javaでは、使う前に必ず用意しておく必要があります。

変数の宣言は、次の形で行います。

変数の宣言

型名 識別子;

ここで指定するのは、変数に入れる値の種類を表す型名と、変数の名前となる識別子です。そして、1つの文として書くので、最後にはセミコロンをつけます。

この形を見ると、とてもシンプルです。けれども、ここには大切な意味があります。型を書くことで、どのような値を入れるための変数なのかを決め、識別子を書くことで、その変数をどの名前で使うのかを決めているのです。

宣言の書き方を例で見る

変数の宣言は、実際の形を見るとさらにわかりやすくなります。

int num;
char c;
double db, dd;

この3つは、いずれも変数を宣言している文です。それぞれの意味を整理すると、次のようになります。

宣言意味
int num;int型の変数numを宣言する
char c;char型の変数cを宣言する
double db, dd;double型の変数dbとddをまとめて宣言する

1つ目は、整数を入れるための num という変数を用意しています。
2つ目は、1文字を入れるための c という変数を用意しています。
3つ目は、double型の変数を2つ、db と dd という名前でまとめて用意しています。

このように、同じ型の変数であれば、カンマで区切って1つの文の中にまとめて宣言することもできます。

宣言すると何が起こるのか

変数を宣言すると、その変数に対応する値の置き場所が用意されます。イメージとしては、コンピュータのメモリ上に、その変数専用の場所が準備されると考えるとわかりやすいです。

つまり、宣言はただ名前を書く作業ではありません。これから値を記憶する場所を、プログラムの中に正式に用意する作業です。Javaでは、この準備をしてはじめて変数が使えるようになります。

この考え方はとても大切です。変数は、あとで値を入れるための箱のようなものですが、その箱を先に用意しておかなければ、中に値を入れることもできません。宣言は、その箱を準備する最初のステップなのです。

図でイメージする変数の宣言

この図では、変数を宣言したことで、メモリの中に num と c という変数の場所が用意されたことを表しています。ここでのポイントは、宣言しただけではまだ値が入っているとは限らず、まずは箱だけが準備されるということです。

このイメージを持っておくと、次に学ぶ代入がとてもわかりやすくなります。宣言は箱を用意する作業、代入はその箱に値を入れる作業、と考えることができます。

変数に値を入れる「代入」

変数を宣言したら、次はその変数に値を記憶させることができます。この作業を代入といいます。

代入は、用意した変数の箱の中に、特定の値を入れるようなイメージです。たとえば、整数を入れるために用意した変数に、ある整数を記憶させる、という流れです。

代入は、次のように = を使って書きます。

num = 3;

この文は、変数 num に 3 を代入する、という意味です。これで、num の中には 3 という値が記憶されます。

ここで特に気をつけたいのは、= の意味です。数学では、= は左右が等しいことを表しますが、Javaでは少し役割が違います。Javaの = は、右側の値を左側の変数に入れる、つまり代入するための記号です。

この違いは、初学者が最初につまずきやすいところでもあります。Javaの = は、等しいことを示す記号ではなく、値を入れるための記号だと理解しておきましょう。

代入の書き方

代入の基本的な形は、次の通りです。

変数への代入

変数名 = 式;

ここでの式は、今の段階ではまず値と考えて大丈夫です。たとえば 3 や 5 のような数値も式のひとつです。今後学習が進むと、計算式なども右側に書けるようになりますが、ここでは変数に値を入れる基本の形として押さえておけば十分です。

この書き方で大事なのは、左側に変数名、右側に入れたい値を書くことです。左と右の役割が逆ではありません。右の値を左の変数へ入れる、という向きで読めるようになると理解しやすくなります。

図でイメージする変数への代入

この図では、最初に int型の変数 num を宣言し、そのあとで num に 3 を代入する流れを表しています。宣言だけでは空の箱ですが、代入を行うことで、その箱の中に具体的な値が入ります。

この図を通してつかんでおきたいのは、宣言と代入は別の作業だということです。宣言は変数を用意すること、代入は値を入れることです。この順番を意識しておくと、コードの流れがとてもわかりやすくなります。

サンプルプログラムで流れを確認する

ここでは、元の内容をもとにしながら、別のシンプルなプログラム例に置き換えて見ていきます。ファイル名は指定どおりそのまま Sample1.java を使います。

ファイル名:Sample1.java

class Sample1
{
    public static void main(String[] args)
    {
        int age;    // 年齢を入れるための変数を宣言します

        age = 18;   // 変数ageに18を代入します

        System.out.println("年齢は " + age + " 歳です。");    // 変数ageの値を表示します
    }
}

実行結果

年齢は 18 歳です。

このプログラムはとてもシンプルですが、変数の宣言と代入、そして出力までの流れがきれいに入っています。学びはじめの段階で、この基本の形をしっかり理解しておくことが大切です。

サンプルプログラムの読み取り方

このプログラムは、大きく3つの流れでできています。

番号内容役割
1int age;変数ageを宣言する
2age = 18;変数ageに値を代入する
3System.out.println("年齢は " + age + " 歳です。");変数ageの値を出力する

まず、int age; で int型の変数 age を用意しています。ここで age という名前の箱が準備されます。

次に、age = 18; で、その箱の中に 18 を入れています。この時点で、変数 age は 18 という値を記憶している状態になります。

最後に、System.out.println を使って、文字列と変数 age の値をつなげて表示しています。ここで表示されるのは age という名前そのものではなく、age に入っている 18 です。

= は「等しい」ではなく「代入する」

変数の学習でとても重要なのが、= の意味を正しく理解することです。

Javaのコードの中で、

age = 18;

と書いたとき、これは age と 18 が等しいという意味ではありません。18 という値を、変数 age に記憶させるという意味です。

この考え方は、数学とプログラミングの違いのひとつです。数学では = は左右が等しいことを表しますが、Javaでは右側の値を左側へ入れる働きをします。

この違いを最初のうちにしっかり意識しておくと、あとで式や計算を学ぶときにも混乱しにくくなります。

変数の値を出力するしくみ

変数に値を入れたら、その値を画面に表示することができます。ここでも大切なのは、表示されるのが変数名ではなく、変数の中身だということです。

たとえば、次の部分を見てみましょう。

System.out.println("年齢は " + age + " 歳です。");

この文では、文字列である 年齢は と 歳です。 の間に、変数 age を入れています。すると、画面には age という文字がそのまま出るのではなく、age に記憶されている 18 が表示されます。

つまり、変数名を書くことで、その変数の中に入っている値を利用できるということです。ここが、ただ文字や数値をそのまま書いていた段階との大きな違いです。

変数名を出力するときの注意

変数の値を出力するときには、変数名を引用符で囲みません。ここはとても大事なポイントです。

たとえば、age をそのまま変数として使いたいときには、引用符なしで書きます。引用符をつけてしまうと、それは変数ではなく、単なる文字列として扱われます。

つまり、変数の値を表示したいときは変数名をそのまま書き、普通の文章として表示したい部分は " " で囲みます。この使い分けができるようになると、画面表示のコードが読みやすくなります。

図でイメージする変数の出力

この図では、変数 age の中に入っている 18 という値が、画面に表示される流れを表しています。ここで見ておきたいのは、画面に出るのは age という名前ではなく、その中身の 18 だということです。

この考え方がわかると、変数はただの名前ではなく、値を持っている存在だということがよくわかります。プログラムでは、その名前を使って中身の値を扱っているのです。

宣言、代入、出力はひとつながりで考える

ここまでの内容は、宣言、代入、出力という3つの段階に分けて見てきましたが、実際にはこの3つはひとつながりの流れとして理解するのが大切です。

まず変数を宣言して用意する。次に、その変数に値を代入する。そして、必要に応じてその値を出力する。この流れが、変数を使った基本の形になります。

この基本が身につくと、今後は数値を入れるだけでなく、計算結果を代入したり、入力された値を保存したり、条件分岐に利用したりできるようになります。つまり、ここで学ぶ宣言と代入は、今後のJava学習の土台になる非常に大切な内容です。

変数を使うとプログラムがぐっと実用的になる

変数を使わない場合、プログラムは決まった文字や数字をそのまま表示するだけになりがちです。けれども、変数を使えるようになると、値をいったん保存し、その値をあとで利用できるようになります。

これは、プログラムの自由度が大きく広がることを意味します。たとえば、同じ表示処理でも、毎回直接数値を書くのではなく、変数に入れた値をもとに表示できるようになります。これにより、値を変更したいときにも扱いやすくなりますし、処理の流れもわかりやすくなります。

変数の宣言と代入は、とても基本的な内容ですが、その役割はとても大きいです。ここをしっかり理解しておくと、この先に学ぶ初期化、式、計算、入力処理も、自然につながって見えてくるようになります。