変数の定義・代入・参照

2010 年 2 月 12 日 金曜日  【 カテゴリー: Javaの基本


変数については「変数の基本型」や「変数名の制約」などについてみてきました。
今回は基本的な変数の使い方についてみていきます。

変数使用の流れ

変数は基本的に次のような流れで使用します。

宣言 ⇒ 代入 ⇒ 参照

変数の宣言

ウィキペディア(Wikipedia)より

プログラムの中でどのような名前の変数を用いるのかを、プログラミング言語の文法にのっとって明確に示すことを変数の宣言という。いくつかのプログラミング言語では、変数を宣言する際にその名前だけでなくそのデータ型も指定する必要がある。 これにより、各変数が扱うことのできるデータの種類を制限できる。一般に、データに対して行える処理はデータ型によって異なるので、データ型を厳密に検査することで、誤ったプログラムを書いてしまうことを防止するのに役立つ。また一部のプログラミング言語では、型推論といって、プログラムで変数の型を明示しなくても、処理系が自動的に型を判断する機能がある。多くの場合、型推論は変数の宣言と代入が一度にまとめて行われることが前提となる。

Javaの変数宣言は、変数名だけでなくデータ型も指定する必要があります。後半に説明されている「型推論」をするプログラム言語の代表としてPHPがあります。私は最近ずっとPHPばかりで「変数の型」への意識が少し薄れてきているので、Javaの勉強をきっかけに変数の型への意識を強めたいと思います。上記説明にもありますように、

データ型を厳密に検査することで、誤ったプログラムを書いてしまうことを防止する

のに役立ちます。

java028

変数について入門書でよく書かれている

変数は「箱」 値は「中身」

このイメージで考えると変数の宣言とは箱を種類を選んでその箱に名前をつけメモリといわれる場所に置くこと。例えば上記画像では4つの異なる箱が置かれ、整数専用箱には「number」、実数専用箱には「rate」というように名前がつけられています。どのような箱の種類があるかは「変数 (基本型)」でまとめたのでこちらを参考にしてくいださい。
では実際にどのようにコードで記述するのかみていきます。

public class sample01 {
   public static void main(String[] args) {
       int number;
       double rate;
       char name;
       boolean result;
   }
}

「変数の宣言」は3~6行目で行っています。

3行目:種類「int」、名前「number」 の箱を準備
4行目:種類「double」、 名前「rate」 の箱を準備
5行目:種類「char」、  名前「name」 の箱を準備
6行目:種類「boolean」、名前「result」 の箱を準備

変数への代入

ウィキペディア(Wikipedia)より

宣言した変数に対して実際にデータを関連付けることを代入という。プログラミング言語によっては、変数の宣言と代入を一度にまとめて行うことができる。変数を宣言せずにいきなり代入できる言語もあるが、これは宣言されていない変数に対して処理系が自動的に宣言を補ってくれていると考えることが出来る。ある変数に対して初めて行う代入は、特に初期化という。

簡単に言えば、「変数の宣言」で準備した箱に中身を入れることです。中身は何度でも入れ替えることができ、宣言してから一番最初に中身を入れることを「初期化」といいます。

java029

では実際にどのようにコードで記述するのかみていきます。

public class sample01 {
   public static void main(String[] args) {
       int number;
       double rate;
       char name;
       boolean result;

       number = 10;
       rate   = 3.15;
       name   = 'A';
       result = true;
   }
}

「変数の代入」は8~11行目で行っています。

08行目:名前「number」の箱に「10」という値を入れる。
09行目:名前「rate」
の箱に「3.15」という値を入れる。
10行目:名前「name」の箱に「A」という値を入れる。
11行目:名前「result」の箱に「true」という値を入れる。

各箱は入れられる種類が決まっています。例えば整数専用の箱「number」に実数「3.15」は入れられません。もし間違って

number = 3.15;

のように代入してしまうとエラーになります。 ※eclipse によるエラー

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
型の不一致: double から int には変換できません

変数への参照

ウィキペディア(Wikipedia)より

その変数に代入したデータを利用することを、変数の参照という。一度も代入を行っていない、つまり初期化していない変数を参照することは意味を成さず、不正である。しかし一部のプログラミング言語では、変数を宣言した段階で、自動的に何らかのデータが変数に関連付けられる。このような言語では、初期化を明示的にプログラムしないまま変数を参照できる。

簡単に言えば箱の中身をみることです。
では実際にどのようにコードで記述するのかみていきます。サンプルは箱の中身を画面に表示するプログラムです。

public class sample01 {
   public static void main(String[] args) {
       int number;
       double rate;
       char name;
       boolean result;

       number = 10;
       rate   = 3.15;
       name   = 'A';
       result = true;

       System.out.println(number);	//表示 10
       System.out.println(rate);	//表示 3.15
       System.out.println(name);	//表示 A
       System.out.println(result);	//表示 rate
   }
}

「変数の参照」は13~16行目で行っています。
System.out.println(変数名) で変数の中身を表示します;

13行目:名前「number」 の箱の中身を表示(10と表示)
14行目:名前「rate」
の箱の中身を表示(3.15と表示)
15行目:名前「name」 の箱の中身を表示(Aと表示)
16行目:名前「result」 の箱の中身を表示(rateと表示)

宣言してない変数を参照するとどうなるかみてみます。

public class sample01 {
   public static void main(String[] args) {
       System.out.println(number);
   }
}

変数名「number」を参照してます。しかし「number」は定義されていません。存在しない箱の中身を見ようとするわけですからエラーになります。※eclipse によるエラー

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
number を解決できません

代入してない変数を参照するとどうなるかみてみます。

public class sample01 {
   public static void main(String[] args) {
        int number;
        System.out.println(number);
   }
}

定義していきなり参照しています。代入とは箱に中身を入れる作業なので、代入がないということは中身がありません。中身がないとエラーになります。※eclipse によるエラー

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
ローカル変数 number が初期化されていない可能性があります

以上で変数の基本的な使い方をみました。


にほんブログ村 IT技術ブログ Webサイト構築へ
にほんブログ村
【WEBサイト構築・プログラムブログ】
ランキング参加中!よろしければ「クリック」お願いします。
にほんブログ村 IT技術ブログ プログラム・プログラマへ
にほんブログ村
2010 年 2 月 12 日 金曜日  【 カテゴリー: Javaの基本

コメントをどうぞ

※管理者による確認後に表示されます。表示までしばらくお待ちください。