エリー、変数、そしてデータ型 - 1

ピンク色の髪をした女性がキャビンに入ってきました。「人間の女性はみんなこんな髪をしているのか」 とアミーゴは不思議に思いました。

「こんにちは!私の名前はエレノア・キャリー。エリーって呼んでね。ギャラクティック・ラッシュ号で航法士をやってるの。」

「こんにちは、エリー」。アミーゴは勇気を出して言いました。

「Java 言語の一番エキサイティングな要素である変数について説明するわ。」

「教えてください。変数とは何ですか?」

変数はデータの保管に使う特別なエンティティよ。ありとあらゆるデータを入れられるの。Java では、すべてのデータが変数に保管されるのよ。一番いい例えは箱。」

「箱?どんな箱ですか?」

「普通の箱よ。紙に 13 という数字を書いて、箱に入れるたとしたら、その箱は 13 という値を保管している、と言えるの。」

「Java の変数には名前という重要な属性が 3 つあるの。

「どういう意味か教えてもらえますか?」

「もちろん。名前を使うのは、他の変数と区別するためよ。箱についてるラベルみないなものね。

変数の型によって、それに保管できる値 / データの種類が決まるのよ。帽子の箱には帽子を、靴の箱には靴を入れるといった感じね。」

「値は、変数に保管されている特定のオブジェクト、データ、または情報です。」

「型についてもう少し詳しく説明してもらえますか?」

「もちろん。Java のオブジェクトにはそれぞれ特定の型があるの。例えば、整数、 分数、テキスト、Cat、House といった感じね。

「変数にも型があって、同じ型を持つ値だけを保管できるようになっているのよ。」

「これは私たちの生活の中でも見られることで、異なるものはそれぞれ異なる箱に保管されているわ。

エリー、変数、そしてデータ型 - 2

「変数を作成 (または宣言) するには、TypeName variableName といった記述をして型の名前を使うの。」

例をいくつか紹介するわ。

変数の宣言:
最初に型、それから名前を書きます。
説明
1
int a;
a と名付けた int 型の変数を作成します。
2
String s;
s と名付けた String 型の変数を作成します。
3
double c;
c と名付けた double 型の変数を作成します。

「最も一般的な型は整数 (int という言葉を使って宣言) とテキスト (String という言葉を使って宣言) の 2 つよ。

「double って何ですか?」

Doubles は分数、つまり実数のことよ。」

「変数には型、名前、値の 3 つの属性があるって言われましたけど、その 2 つしか見当たりません。値を変数に割り当てる方法を知りたいのですが。」

「では、箱の例に戻りましょう。紙に 42 という数字を書いて、それを箱の中に入れたとしましょう。これで、箱は 42 という値を保管していることになります。」

「なるほど。」

「値を変数に割り当てるには、特別な演算 (代入) を行います。代入とは、1 つ変数の値を別の変数にコピーすることなの。値を移動させているのではなくて、コピーしているだけなのよ。ディスク上のファイルみたいなものね。その記述の仕方を紹介するわ。」

コード 説明
1
i = 3;
3 という値を変数 i に割り当てます。
2
a = 1;
b = a+1;
1 という値を変数 a に割り当てます。
2 という値を変数 b に割り当てます。
3
x = 3;
x = x + 1;
3 という値を変数 x に割り当てます。
この行では x の値を 1 つ増やして、x を 4 にしています。

「代入演算を行うときは、等号 (=) を使うのよ。」

「もう一度説明しておくけど、これは値を比較している訳ではないのよ。等号の左側の変数に等号の右側の値をコピーしているの。Java で値を比較するときは、二重等号 (==) を使います。」

「私は猫を変数に入れる方法を知っていますよ。ほぼプログラミングみたいなものです。」

"猫を捕まえる方法:

1.空箱を用意する。

2.待機する。」

エリー、変数、そしてデータ型 - 3

「それは違うわ、アミーゴ。猫は 1 つの箱に 1 匹しか入れられないのよ。つまり、変数に代入できる値は 1 つだけなの。

「そうなんですか。変数を作成するときの例をもっと見せてもらえますか?」

「いいわよ。もう一度言っておくけど、変数を作成 (または宣言) するときは、«TypeName variableName» のように記述しなくてはいけないのよ。」

コード 説明
1
String s;
s と名付けた String 型の変数が作成されました。
この変数にはテキストを保管できます。
2
int x;
x と名付けた int 型の変数が作成されました。
この変数には整数を保管できます。
3
int a, b, c;
int d;
それぞれ abcd と名付けられた int 型の変数が作成されました。
これらの変数には整数を保管できます。

「なるほど、やっと分かりました!」

「同じメソッドの中で同じ名前の変数を 2 つ作ることはできないから、覚えておいてね。」

「別のメソッドの中ならどうですか?」

「それなら大丈夫よ。複数の同じ箱をそれぞれ違う家に置くようなものよ。」

「変数にはどんな名前を付けてもいいんですか?」

「そうなんだけど、変数名にスペース、「+」、「-」 などを含めることはできないの。変数名には文字と数字を使うのが一番無難ね。」

Java では大文字と小文字は区別されるのよ。 int aInt a は別物として判断されるから覚えておいてね。

「ちなみに、Java では変数を作成すると同時に値を割り当てることができるの。こうやって時間をスペースを節約するのよ。」

コンパクトなコード 同じ内容の長いコード
1
int a = 5;
int b = 6;
int a;
a = 5;
int b;
b = 6;
2
int c = 7;
int d = c+1;
int c;
c = 7;
int d;
d = c+1;
3
String s = "I'm Amigo";
String s;
s = "I'm Amigo";

「この方がかなりコンパクトで分かりやすいですね。」

「私たちはそうしてるわ。」

「Java の初心者は int (整数)String (テキスト / 文字列) の 2 つに慣れる必要があるの。

int 型を使えば、変数に数字を保管して、それを使った足し算、引き算、掛け算、割り算といった演算ができるのよ。」

コード 説明
1
int x = 1;
int y = x*2;
int z = 5*y*y + 2*y + 3;
x イコール 1
y イコール 2
z イコール 20+4+3 で、27 となる
2
int a = 5;
int b = 1;
int c = (a-b) * (a+b);
a イコール 5
b イコール 1
c イコール 4*6 で、24 となる
3
int a = 64;
int b = a/8;
int c = b/4;
int d = c*3;
a イコール 64
b イコール 8
c イコール 2
d イコール 6

「分かりました。プログラミングっていつもこんなに簡単なんですか?」

「実はそうなのよ。」

「良かった!次は何ですか?」

String 型を使えば、'文字列' とも呼ばれているテキストを保管できるの。」

「Java で文字列を割り当てるには、テキストをクォーテーションマークの中に入れる必要があるの。下に例をいくつか紹介するわ。」

コード 説明
1
String s = "Amigo";
s には "Amigo"
2
String s = "123";
s には "123"
3
String s = "123 + 456";
s には "123 + 456"

「分かりました。そんなに難しそうじゃないですね。」

「もう 1 つ面白いことを教えてあげるわ。」

「文字列はプラスの記号 (+) を使えば連結できるのよ。下の例を見て。」

コード 説明
1
String s = "Amigo" + " is the best";
s には "Amigo is the best"
2
String s = "";
s には記号もない空の文字列が格納されています。
3
int x = 333;
String s = "Amigo" + x;
s には "Amigo333"

「文字列を数字に追加できるってことですか?」

「そうよ、でも文字列と数字を連結したら、その結果はいつも文字列として扱われるから気を付けてね。」

「それは先ほどの例の内容から理解できました。」

「あなたは賢いみたいだから、変数を画面に表示する方法を考えてみて。」

「え。。変数を?画面に?さっぱり分かりません。」

「実はとてもシンプルなのよ。何かを画面に表示するときは、System.out.println() のコマンドを使って、出力したいものを引数として渡すの。」

コード 画面の表示
1
System.out.println("Amigo");
アミーゴ
2
System.out.println("Ami"+"go");
アミーゴ
3
String s = "Amigo";
System.out.println(s);
アミーゴ
4
String s = "Am";
System.out.println(s+"igo");
アミーゴ

「なるほど!これで全部理解できました。」

「素晴らしい。あなたのためにエクササイズをあと 3 つ用意しておいたわ。」