Java超|Javaの変数と識別子

変数は、値をしまうためのエネルギーカプセル。識別子は、そのカプセルを呼び出すための名前札。Javaの基本の型を身につけて、値を自由に扱う修行へ進もう。

第2章では、文字、文字列、数値を画面に表示する方法を学びました。

そこでは、Javaコードに直接書いた値を、System.out.printlnで画面に表示することが中心でした。たとえば、次のような形です。

System.out.println("Java修行を始めます。");
System.out.println(100);

この段階では、コードに書いたものがそのまま画面に出るため、Javaの動きも比較的イメージしやすかったと思います。

ここからは、Javaがよりプログラムらしく動くための大切な考え方に入っていきます。その第一歩になるのが、変数識別子 です。

変数とは、値を一時的に覚えておくためのしくみです。識別子とは、その変数につける名前です。

ドラゴンボール風にたとえるなら、変数は エネルギーや道具をしまっておくカプセル のようなものです。戦士が修行中に、仙豆の数、戦闘力、敵までの距離、仲間の名前などを覚えておきたい場面があります。そのとき、情報をただその場に置いておくのではなく、名前付きのカプセルにしまっておくと、あとから取り出して使いやすくなります。

Javaでも同じです。

プログラムは、ただ決まった値を表示するだけではありません。入力された値を覚えたり、計算結果を保存したり、あとでその値を取り出したりしながら動きます。この「値を覚えておくしくみ」が変数です。そして、どの変数を使うのかを区別するための名前が識別子です。

Javaの用語役割ドラゴンボール風のたとえ
変数値を記憶しておくしくみエネルギーカプセル、道具箱
識別子変数などにつける名前カプセルの名前札
変数名変数を区別する名前どのカプセルか分かるラベル
メモリ値を一時的に保存する場所大きな補給基地
保存されるデータ戦闘力、仙豆の数、仲間の名前

変数と識別子は、Javaの学習で何度も登場する基本です。

ここをしっかり理解しておくと、このあと学ぶ型、代入、初期化、キーボード入力なども自然につながって見えてきます。

変数とは値を記憶しておくしくみ

変数とは、プログラムの中で値を記憶しておくためのしくみです。

たとえば、次のような値をあとで使いたい場面があります。

場面変数の役割
入力された数値を使いたい入力値を一時的に覚える
計算結果をあとで使いたい結果を保存しておく
同じ値を何度も使いたい名前を使って値を呼び出す
条件によって処理を変えたい判断に使う値を保持する
表示内容をあとで変えたい値だけを入れ替えて再利用する

Javaのコードに値を直接書くだけでは、毎回同じ値しか扱えません。

System.out.println(100);

このように書くと、画面には100が表示されます。しかし、プログラムの途中で値を変えたり、入力された値を保存したりするには、値を覚えておく場所が必要になります。

そこで使うのが変数です。

ドラゴンボール風に言えば、変数は 修行中に使うエネルギーカプセル です。

たとえば、戦闘力を入れるカプセル、仙豆の数を入れるカプセル、敵までの距離を入れるカプセルを用意しておくと、必要なときに中身を取り出して使えます。

変数の動きカプセルのイメージ
値を保存するカプセルに道具やエネルギーを入れる
値を使うカプセルの中身を取り出す
値を変更するカプセルの中身を入れ替える
変数名を使う名前札を見てカプセルを選ぶ

変数という言葉は少しかたく感じるかもしれません。

最初は、値を入れておく箱 と考えると分かりやすいです。

ただし、本当にコンピュータの中に箱が置いてあるわけではありません。実際には、メモリという記憶領域を使って値を保存しています。箱やカプセルは、理解しやすくするためのイメージです。

変数とメモリの関係

変数を理解するうえで大切なのが、メモリ です。

メモリとは、プログラムが動いているあいだに、値を一時的に記憶しておく場所です。

コンピュータは、数値、文字、文字列などの情報をメモリに置きながら処理を進めます。

ドラゴンボール風にたとえるなら、メモリは 巨大な補給基地 です。

その補給基地の中に、修行や戦闘で使うエネルギーカプセルが並んでいます。変数は、その補給基地の中に用意された名前付きのカプセルです。

用語イメージ役割
メモリ補給基地値を一時的に保存する場所
変数名前付きのカプセル値を保存してあとで使えるようにする
エネルギーや道具数値、文字、文字列などのデータ
変数名名前札どの変数かを区別する

大切なのは、変数は単なる名前ではなく、値を保持するためにメモリを使うしくみだということです。

学習の入り口では、次のように考えると十分です。

考え方内容
メモリ値を保存する場所
変数メモリ上の値を扱いやすくするしくみ
変数名その値を呼び出すための名前
値の利用保存した値をあとから取り出して使う

変数があることで、プログラムは値を覚えながら処理できます。

これにより、ただ固定された表示をするだけでなく、入力や計算結果に応じて動くプログラムへ進めるようになります。

図:変数をカプセルとしてイメージ

この図が示していること

この図は、変数が値を一時的に保存し、あとで取り出して使うためのしくみであることを示しています。

メモリという大きな保存場所の中に、power、distance、name のような名前付きのカプセルがあり、それぞれのカプセルに値が入っています。

この図から分かることは、変数はただの名前ではなく、値を管理するためのしくみだということです。値を保存し、名前を使って取り出せるようになることで、プログラムは情報を扱いやすくなります。

変数は箱のように考えると分かりやすい

変数は、よく箱にたとえられます。

これはとても分かりやすい考え方です。

箱の中に物を入れておき、必要なときに取り出すように、変数にも値を入れておき、あとで使うことができます。

ドラゴンボール風にたとえるなら、変数は戦士が持つ 専用のカプセルケース です。

カプセルケースには、修行中に必要な情報を入れておけます。

たとえば、次のような情報です。

変数に入れる値ドラゴンボール風のイメージ
敵の数周囲にいる敵戦士の数
残り体力戦士の現在のエネルギー
獲得した点数修行スコア
仲間の名前一緒に戦う戦士の名前
入力された値指令室から受け取った情報

変数のよいところは、値を あとから使える ことです。

たとえば、計算した結果をその場で表示して終わりにするのではなく、変数に保存しておけば、あとで別の計算や条件判断に使えます。

変数がない場合変数がある場合
値をその場で使うだけ値を覚えてあとで使える
同じ値を何度も直接書く名前を使って何度も呼び出せる
値の意味が見えにくい名前によって意味が分かりやすい
入力値や計算結果を扱いにくい入力値や計算結果を保存できる

このイメージのよいところは、プログラムの流れが見えやすくなることです。

値を受け取る → 保存する → あとで使う

この流れを、目に見える形で考えられます。

識別子とは変数につける名前

変数を使うには、値を入れる場所があるだけでは足りません。

どの変数を使うのかを区別するために、それぞれの変数に名前をつける必要があります。

この名前として使われるのが 識別子 です。

ドラゴンボール風にたとえるなら、識別子は カプセルにつける名前札 です。

名前札がなければ、どのカプセルに何が入っているのか分かりません。

powerという名前札があれば、戦闘力の値が入っていそうだと分かります。nameという名前札があれば、名前が入っていそうだと分かります。scoreという名前札があれば、得点を扱っているのだと予想できます。

用語役割
変数値を記憶するしくみ
識別子変数などにつける名前
変数名変数を区別するための識別子
名前の目的どの値を扱うのか分かりやすくする

識別子は、ただ好きな文字を並べればよいわけではありません。

Javaのルールに従って作る必要があります。

つまり、識別子は 人間が読みやすい名前 であると同時に、Javaが正しく理解できる名前 でなければなりません。

識別子の役割

識別子の役割は、どの変数なのかを区別できるようにすることです。

プログラムの中で扱う値が1つだけなら、名前の重要性はあまり感じないかもしれません。

しかし、実際のプログラムでは、たくさんの値を扱います。

たとえば、次のような値です。

扱う値識別子があることで分かること
年齢人の年齢を保存していると分かる
点数テストやゲームの点数だと分かる
合計複数の値を足した結果だと分かる
平均平均値を表していると分かる
入力値ユーザーが入力した値だと分かる
戦闘力キャラクターの強さを表す値だと分かる

識別子があることで、プログラムを書く人も読む人も、その変数が何のために使われているのかを理解しやすくなります。

変数名を適切につけることは、単にエラーを防ぐためだけではありません。

コードの読みやすさ、修正のしやすさ、ほかの人との共同作業のしやすさにも大きく関係します。

変数名の状態読みやすさ
意味が分かる名前何の値か理解しやすい
極端に短すぎる名前役割が分かりにくいことがある
用途と関係ない名前読む人が混乱しやすい
統一感のある名前コード全体が読みやすくなる

ドラゴンボール風に言えば、カプセルに 箱1箱2箱3 とだけ書かれていたら、中身を確認しないと何が入っているか分かりません。

しかし、仙豆の数戦闘力修行スコア と書かれていれば、必要なカプセルをすぐに選べます。

識別子の基本ルール

識別子には、Javaで決められた基本ルールがあります。

名前として自然に見えても、Javaのルールに合わなければ識別子として使えません。

ルール内容
使用できる文字通常、英字、数字、アンダースコア _、$ などを使う
長さ長さに制限はない
キーワードJavaが予約しているキーワードは使えない
先頭文字数字ではじめることはできない
大文字小文字区別される

特に注意したいのは、数字ではじめることができない 点です。

たとえば、12a は識別子として使えません。数字から始まっているからです。

また、class や return のように、Javaが文法上の意味を持つ言葉として予約しているものは、変数名として使えません。これらはキーワードと呼ばれます。

さらに、大文字と小文字は区別されます。

name
Name

この2つは、Javaでは別の識別子として扱われます。

人間の目には似ていますが、Javaにとっては違う名前です。

正しい識別子と正しくない識別子

識別子のルールは、実際の例で見ると理解しやすくなります。

識別子として正しい例

識別子理由
a英字ではじまっている
abc英字だけで構成されている
ab_cアンダースコアが使われている
F1英字ではじまり、あとに数字が続いている
power英字ではじまっていて意味も分かりやすい
battleScore英字ではじまり、役割も伝わりやすい

これらは、Javaのルールに合っているため、識別子として使うことができます。

識別子として正しくない例

識別子理由
12a数字ではじまっている
returnJavaのキーワードである
is-aハイフンは識別子に使えない
classJavaのキーワードである

ここで気をつけたいのは、人間には名前らしく見えても、Javaでは認められない場合があることです。

たとえば、is-a のように単語をハイフンでつなぐ表現は、文章では自然に見えるかもしれません。しかし、Javaの識別子としては使えません。

Javaでは、名前の見た目だけでなく、文法ルールに合っているかどうかが重要です。

図:識別子は変数につける名前札

この図が示していること

この図は、変数には名前が必要であり、その名前として使われるものが識別子であることを示しています。

power、score、name のような名前札がついていることで、プログラムの中でそれぞれの変数を区別して扱えるようになります。

この図から分かることは、識別子はただの文字列ではなく、Javaのルールに従って作られた大切な目印だということです。正しい識別子を使うことで、Javaはどの変数を扱えばよいのかを判断できます。

変数を使う前に決めること

変数を扱うためには、最初に大きく2つのことを決める必要があります。

1つ目は、変数の名前です。これが識別子です。

2つ目は、変数の型です。型は、その変数にどのような種類の値を入れるのかを示します。

決めること内容
変数の名前どの変数なのかを区別する
変数の型どの種類の値を入れるのかを決める

ドラゴンボール風に考えると、カプセルに名前札をつけるだけでなく、何を入れるカプセルなのかも決めておく必要があります。

仙豆を入れるカプセルなのか。
戦闘力を入れるカプセルなのか。
仲間の名前を入れるカプセルなのか。

入れるものの種類が分かっていれば、使い方を間違えにくくなります。

Javaでも同じです。

何を入れる変数なのかをはっきり決めてから使うという考え方が基本です。これは、Javaがきちんとしたルールのもとで動く言語であることを表しています。

変数に入れたいもの型の考え方
整数整数を入れる型を使う
小数小数を入れる型を使う
文字1文字を入れる型を使う
文字列文字の並びを入れる型を使う

型については、このあとさらに詳しく学びます。

ここでは、変数を使うには 名前値の種類 を考える必要がある、と押さえておきましょう。

分かりやすい変数名が大切な理由

変数名は、Javaのルールを守っていれば何でもよいというわけではありません。

実際には、見ただけで意味が伝わる名前をつけることがとても大切です。

たとえば、次のような変数名を比べてみましょう。

変数名印象
a何の値か分かりにくい
x一時的な値ならよいが、意味は伝わりにくい
score得点を表していると分かる
power戦闘力や力を表していると分かる
playerNameプレイヤー名を表していると分かる
battleScore戦闘スコアだと分かる

ドラゴンボール風にたとえるなら、カプセルに A とだけ書かれていても、中身は分かりません。

でも、戦闘力仙豆の数修行スコア と書かれていれば、目的のカプセルをすぐに見つけられます。

プログラムは、自分だけが読むとは限りません。

将来の自分が読み返すこともありますし、チームで開発する場合はほかの人も読みます。そのため、変数名には 正しい だけでなく、分かりやすい ことも求められます。

変数名の考え方読みやすさ
意味が分かる名前何の値か理解しやすい
極端に短すぎる名前役割が分かりにくいことがある
用途と関係ない名前読む人が混乱しやすい
統一感のある名前コード全体が読みやすくなる

名前が整っているコードは、読む人にやさしいコードです。

初心者のうちから、分かりやすい変数名を意識しておくと、あとで長いプログラムを書くときに大きな力になります。

変数名のつけ方の慣習

変数名には自由さがありますが、実際の開発では慣習に従うことも大切です。

Javaでは、変数名は英小文字から始めることが一般的です。

複数の単語を組み合わせる場合は、2つ目以降の単語の先頭を大文字にする書き方がよく使われます。

たとえば、次のような名前です。

score
playerName
battleScore
totalPower
変数名読み取りやすさ
score得点だと分かる
playerNameプレイヤー名だと分かる
battleScore戦闘スコアだと分かる
totalPower合計の力だと分かる

このように、最初の単語は小文字ではじめ、2つ目以降の単語の先頭を大文字にする書き方は、Javaの変数名でよく使われます。

意識すること内容
英小文字を基本にするJavaらしい自然な書き方になる
意味が伝わる名前にする何の値か分かりやすい
書き方をそろえるコードに統一感が出る
短さだけを優先しない読みやすさを大切にする

変数名は、プログラムの読みやすさを大きく左右します。

名前が分かりやすいと、コードを読んだときに、どの変数が何を表しているのかすぐに理解できます。

変数と識別子の関係

変数と識別子は、セットで考えると理解しやすいです。

変数は値を記憶するしくみです。
識別子は、その変数につける名前です。

項目役割ドラゴンボール風のイメージ
変数値を保存するエネルギーカプセル
識別子変数を区別する名前名前札
メモリ値を置いておく場所補給基地
保存されるデータエネルギーや情報
入れられる値の種類カプセルの専用タイプ

この関係が分かると、変数を使う意味がはっきりしてきます。

ただ値を保存するだけではなく、その値に名前をつけて扱えるようにすることで、プログラムは複数の値を整理しながら処理できるようになります。

たとえば、戦闘力、スコア、名前をそれぞれ変数に入れておけば、プログラムの中で別々に扱えます。

変数名入っていそうな値
power戦闘力
score得点
name名前
distance距離
totalPower合計の戦闘力

識別子があることで、Javaも人間も、どの値を使っているのかを区別しやすくなります。

図:変数と識別子の関係

この図が示していること

この図は、変数、識別子、メモリ、値の関係を整理しています。

メモリという保存場所の中に変数があり、その変数には識別子という名前が付いています。そして、変数の中には値が保存されています。

この図から分かることは、変数は値を保存するしくみであり、識別子はその変数を区別するための名前だということです。名前があることで、Javaコードの中で必要な値を選んで使えるようになります。

変数と識別子を学ぶ意味

変数と識別子は、Javaの基本の中でも特に重要です。

変数が分かると、プログラムが値をどのように覚え、どのように使っているのかが見えてきます。

識別子が分かると、変数をどのように区別し、どのように名前づけしているのかが理解できます。

学ぶ内容身につく力
変数値を保存して使う考え方
メモリ値が一時的に保持されるイメージ
識別子名前で変数を区別する考え方
識別子のルール正しい名前をつける力
変数名の慣習読みやすいコードを書く意識

最初は、変数は値を入れる箱、識別子はその箱につける名前、と考えて大丈夫です。

この基本イメージをしっかり持っておくと、型、宣言、代入、初期化、キーボード入力といった内容も、ばらばらではなく、つながりのある知識として理解しやすくなります。

ドラゴンボール風に言えば、変数と識別子は、これから本格的な技を使うための基礎の構えです。

値をただ直接書くだけの段階から、値を覚え、名前で呼び出し、あとで使う段階へ進む。

ここから、Javaのプログラムはぐっと自由に動かせるようになっていきます。