連載
» 2004年07月29日 00時00分 UPDATE

Eclipseではじめるプログラミング(3):Javaの変数の型と宣言を理解する (1/2)

[小山博史,@IT]
/fjava/index/index_eclipsejava.html

【改訂版】Eclipseではじめるプログラミング New!
これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、本連載「Eclipseではじめるプログラミング」の改訂版となります

 インターネット上のショッピングWebサイトなどで、カートに品物を追加すると、現在の買い物に必要な総額が表示されるというのをよく見かけませんか? この総額は、品物を追加したり削除したりするたびに変わります。こういったコンピュータを操作している間に値が変化するようなものを扱うプログラムはどのように作ればいいのでしょうか? 今回はこういったプログラムを作成するのに必要な、変数と型について解説します。

変数

 変数とは、値を入れる入れ物のようなものです。入れ物なので、変数の中に入る値は変更することができます。先ほどのショッピングサイトの総額表示の例では、この変数を総額の計算に用いています。別の表現をすれば、変数とは「プログラムを実行している間に値が変わる数」のことともいえるでしょう。

 コンピュータはプログラムを実行している間、この数をメモリに書き込んで保持したり、メモリに保持していた数を読み込んで計算をしたりすることができます。このメモリ領域を確保するためには変数の宣言をします。

 メモリというのは、図1に示すようなマス目のシートだと思えばいいです。各マス目には0か1の値が書き込めます。また、8マスごとにアドレスが割り振られています。例えば図1の1600から1602の各アドレスには2進数で整数値が入っていると見なすと、1600には1(2進数で表すと00000001)、1601には2(2進数で表すと00000010)、1602には3(2進数で表すと00000011)が入っているといえます。コンピュータは、これらのマス目に0や1を書き込むことで値を保持したり、書き込まれている値を読み出して計算へ利用したりするのです。

図1 メモリのイメージ 図1 メモリのイメージ

 変数の宣言をするときには、メモリ領域をどのように使用するかを決めるためのと、そのメモリ領域の読み書きをするときに使う変数名(正確には識別子)とを指定します。型にはプログラマが拡張できない基本型(プリミティブ型)と、プログラマが拡張できる参照型(リファレンス型)がありますが、今回は基本型を理解しましょう。ここでは基本型の中でも、始めにに知っておくべき3つの型だけを紹介します(表1)。

型名 メモリ領域をどのような値に使用するか(取り得る値)
boolean 論理値(true か false)
int 整数値(-2147483648〜2147483647)
double 実数値(-1.7976931348623157×(10の308乗)〜1.7976931348623157×(10の308乗))
表1 基本型(一部)

参考

正確には、booleanは「論理型」、intは「32ビット符号付き2の補数表現の整数」、doubleは「64ビットIEEE 754-1985浮動小数点数」です。ここでは読者が理解しやすいように大ざっぱに分類しているだけです。例えば、1.0×(10の-400乗)は表1ではdoubleの取り得る値の範囲に含まれますが、実際には使えません。これらの詳細については本連載の範疇を超えますので説明しませんが、興味のある読者の方はコンピュータ科学の教科書などを調べてみてください。


 具体的に変数の宣言をするためにはリスト1のようにします。変数名は「文字で始めて、その後に文字か数字を続けたもの」を指定します。変数の宣言が終わったことを示すために、最後にセミコロン(;)を書きます。

int i;
リスト1

 ここで、プログラムはコンピュータへの命令を記述するものだということを思い出してください。リスト1はコンピュータへ「intの値を読み書きするためのメモリを用意して、iという名前で使えるようにしなさい」と命令しています。Javaではこのような命令を文と呼びます。セミコロン(;)は文の終了を示すものと考えてもよいです。

 宣言した変数を使うためには、まずは値を設定して、その後に参照をします。変数へ値を設定するには代入演算子「=」を使います。変数に設定されている値を参照するには変数名を書けばいいだけです。具体的に、リスト1で宣言した変数iへ1という値を代入して、その変数iの値を出力するにはリスト2のようにします。

i= 1;
System.out.println(i);
リスト2

 数学において「=」は「左辺と右辺とが等しい」という意味を表す等号記号ですが、Javaではこのように右辺の値を左辺の変数へ代入する記号となります。また、前回は「System.out.println(0);」として出力する値をそのまま書いていたところに相当する部分に、今回は変数名を書いていることに注意してください。

 ここで、右辺の値として書いた1について簡単に説明をしておきましょう。基本型には型に応じて代入できる値が決まっています。そういった値をプログラムの中で表現する文字列のことをリテラルといいます。−2147483648〜2147483647の整数を表す数字列はint型変数に代入できるリテラルになり、1はこれに含まれるのでint型変数iへ代入できます。3.1415のように数字とドット(.)からなる実数を表す文字列はdouble型変数へ代入できるリテラルです。boolean型の変数へ代入できるリテラルはtrueかfalseだけです。リスト3へboolean型変数を使う場合の例を示します。

boolean b;
b = true;
System.out.println(b);
リスト3

変数を使ったプログラム

 それでは実際にEclipseで変数を使ったプログラムを作成し、実行してみましょう。C:\eclipseディレクトリにあるeclipseをマウスの左ボタンでダブルクリックしてください。Eclipseが起動し、前回作成したプロジェクトSampleとクラスPrintがそのまま表示されるはずです(画面1)。今回はこのクラスPrintへ命令を追加していきます。

画面1 前回作成したコード 画面1 前回作成したコード

 リスト4の水色の部分を追加してください。EclipseではJavaであらかじめ意味が決められていて予約されている文字列(キーワード)などを分かりやすく表示する機能があります。インストールしたままの設定だと、紫色の太字で表示されているはずです。

リスト4 リスト4

 キーワードにはいろいろありますが、intやbooleanといった型を意味する文字列はキーワードに含まれます。trueやfalseはキーワードではなくリテラルなのですが、同じように表示されてます。0や1といった数を表すリテラルは普通に表示されています。ちなみに、変数名にはキーワードやリテラルは使えません。この機能のおかげで、キーワードなどのスペルミスや、変数名へ間違えてキーワードを使ってしまっても、すぐに気付くことができます。

 プログラムを入力し終わったら、[ファイル]→[保管]を実行してファイルを保存してから、[実行]→[次を実行]→[Javaアプリケーション]を指定して実行してみましょう。コンソールへ最初にリテラル0の値0、次に変数iの値1、最後に変数bの値trueが出力されれば成功です(画面2)。

画面2 Eclipseのコンソールに結果が出力される 画面2 Eclipseのコンソールに結果が出力される
       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。