変数って何?
変数は、プログラミングの基本中の基本です。よく「箱」に例えられますが、説明を読むだけではピンと来ないかもしれません。実際に値を入れたり、入れ替えたりして、その使い方をつかんでいきましょう。
今回は、整数を入れる変数 age を使います。前回作った Main.java を開いて、mainメソッドの中を書き換えながら進めてください。
変数の宣言
Javaで変数を使うには、まず変数の宣言をします。型と名前を、半角スペースで区切って書き、最後に ; を付けます。
Main.java
int age;これで、int型の変数ageを宣言しました。
int:整数を扱う型です。型は、その変数にどのような値を入れられるかを決めます。age:変数の名前です。ここでは年齢を表す英語のageを使っています。
箱に例えるなら、「ageという名前の、整数を入れる箱を用意した」と考えてください。ただし、この時点ではまだ、自分で値を入れていません。
型には int のほかにも、小数を扱う型や、真・偽を扱う型などがあります。今回は全部覚える必要はありません。まずは int を使って、変数がどういうものか体験してみましょう。
int に入れられる整数には範囲があります(−2,147,483,648〜2,147,483,647)。今回の年齢のような値は、この範囲で扱えます。
変数の名前の付け方
変数の名前は自分で付けられますが、いくつかルールがあります。
intやclass、publicなどの予約語は使えません。- 名前の先頭を数字にはできません。
test1は使えますが、1testは使えません。 - 今回のように一つのmainメソッドの中へ順に書く場合、同じ名前の変数を二度宣言することはできません。
age と Age は別の名前です。変数名は小文字から始め、複数の単語をつなぐときは studentAge のように後の単語の頭を大文字にするのが一般的です。これは読みやすくするための慣習です。
変数の初期化と代入
用意した変数に、値を入れてみましょう。
Main.java
int age;
age = 35;一行目でageを宣言し、二行目でageに35を入れています。変数に値を入れることを代入といい、最初の値を与えることを初期化といいます。
宣言と初期化は、一行にまとめることもできます。
Main.java
int age = 35;こちらも「int型の変数ageを用意して、最初の値を35にする」という意味です。
「=」は「等しい」ではなく「代入する」
数学で使う = は、左辺と右辺が等しいことを表します。しかし、Javaの = は右側の値を、左側の変数に代入するという意味です。
Main.java
int age = 35;
age = 36;
age = 37;このコードは、上から順に実行されます。最初は35、次に36、最後に37が入るので、最終的なageの値は37です。
| 実行する文 | 実行直後のageの値 |
|---|---|
int age = 35; | 35 |
age = 36; | 36 |
age = 37; | 37 |
箱の中に35、36、37がたまっていくわけではありません。新しい値を代入すると、前の値が置き換わります。
Main.java
int age;
System.out.println(age);変数を使ってみる
ここからは実際に出力して、ageに入っている値を確かめます。Main.java を次のように書き換えてください。
public class Main {
public static void main(String[] args) {
int age = 35;
System.out.println(age);
}
}緑色の▶から「Main.main() を実行」を選ぶと、コンソールに次のように表示されます。
35System.out.println(age); は、ageという名前そのものではなく、変数ageに入っている値を出力しています。
メソッドを呼ぶときにカッコの中へ渡す値を引数(ひきすう)といいます。ここではageの値である35を渡しています。引数については、後の講座で詳しく説明します。
ageと"age"は違う
mainメソッドの中を、次のようにしてみてください。
Main.java
int age = 35;
System.out.println("age");
System.out.println(age);age
35"age" はダブルクォーテーションで囲まれているので文字列です。一方、囲まれていない age は変数の名前として扱われます。
この違いを利用すると、説明の文字と変数の値を続けて出力できます。
Main.java
int age = 35;
System.out.print("age:");
System.out.println(age);age:35最初の print は改行しないので、age: のすぐ後ろに35が出力されます。次の println は35を出力してから改行します。
1年後の年齢を出力してみよう
もう少し、プログラムらしいことをしてみましょう。今の年齢を出力した後、ageの値を1増やして、もう一度出力します。
public class Main {
public static void main(String[] args) {
int age = 35;
System.out.print("age:");
System.out.println(age);
age = age + 1;
System.out.println("1年後・・");
System.out.print("age:");
System.out.println(age);
}
}実行結果は、次のとおりです。
age:35
1年後・・
age:36注目してほしいのは、この一文です。
Main.java
age = age + 1;数学の方程式だと思うと、「両辺からageを引いたら0=1?」となってしまいます。でも、これは方程式ではありません。右側を計算して、その結果を左側へ代入するという処理です。
- まず、右側の
age + 1を計算します。今のageは35なので、35+1=36です。 - 計算結果の36を、左側のageに代入します。
- ageの値が35から36に変わります。
そのため、この後の System.out.println(age); では36が出力されるわけです。
値を変えるたびにintは付けない
ここで、一つ間違えやすい書き方があります。
Main.java
int age = 35;
int age = age + 1;「ageはint型だったな」と思って、もう一度 int を付けたくなるかもしれません。しかし、int age は変数を宣言する書き方です。型を確認するための印ではありません。
すでに宣言した変数の値を変えるだけなら、次のように書きます。
Main.java
int age = 35;
age = age + 1;これで、最初に用意したageの値が更新されます。
自分で書き換えてみよう
「1年後の年齢」のプログラムで、最初の35を好きな年齢に変えて実行してみてください。次に、age = age + 1; を age = age + 5; に、表示する文字を "5年後・・" に変更します。実行前に予想した結果と一致するでしょうか。
変数という「箱」の中身が、プログラムによって変わっていく。その感覚がつかめれば、今回は十分です。
次は、今回使った + や = などの演算子を見ていきます。変数と演算子が分かると、プログラムでできることが広がります。
質問・コメント
読み込み中この記事についての質問や、学習して気づいたことをお寄せください。
この記事のコメント
旧サイトに寄せられたコメントも当時の投稿内容のまま掲載しています。現在の記事では変更している内容や、旧環境についてのやり取りも含まれます。
コメントを読み込んでいます。