1.ハロー、Java
~変数と型~

 易しい言葉でJavaの基本中の基本を解説します。なんとなくわかれば結構。だけどこれから読み進めていくために必ず理解しておいてほしい事柄や、覚えておいてほしい用語は、目立つようにしましたので、きっちりマスターしておきましょう。

なぜ今Java?



 BasicやCOBOL、Cといった先輩言語を差し置いて、なぜこんなにジャバジャバと騒がしいのでしょうか?
 実はインターネットと関わりが大きいのです。Javaはもともとネットワークを意識して作られたので、これが今のネットワーク時代とぴったりマッチしたのです。あなたがインターネットで野球のチケットを買うとき、携帯電話で電車の時刻表を調べるとき、Javaがひっそり活躍しているかもしれません。

 そしてついにやってきました、スマートフォンの時代!おなじみGoogleのAndroid、さあJavaでアプリを作りましょう。その第一歩がこの「ハロー、Java」です。

 他にも先輩言語のいいところを取り入れ、悪いところを切り捨てたり直したりして、いろいろな分野で使える言語となったのです。後輩の強みですね。

運動会のプログラム

 まずはJavaのプログラムがどんな形になるのか、だいたいのイメージを頭の中に作ることからはじめましょう。

 プログラムといえば運動会。
  1.入場行進
  2.応援合戦
  3.玉いれ
  4.綱引き

と種目が順序良く並んで印刷されています。BasicやCのプログラムはこんな感じ。コンピュータにやらせたいことを順序良く書いていけば出来上がり。(まあそんなに簡単ではないのだけれど)

 ところがJavaのプログラムの形はちょっと違う。クラスの集まりなのです。プログラミングするということは、クラスを定義する(クラスを宣言する、ともいいます)ということ。クラスとは?これから少しずつお話していきます。


Javaのプログラムの形

 もしあなたが新しいクラスを作るとなると、ざっとこんな形になります。

import 利用するクラスのフルネーム;
import 利用するクラスのフルネーム;
  :
public class クラス名 {
 クラスの中身の定義



 Javaには既存のクラスがたくさん用意されています。新たにプログラムを作るときには、これらをどんどん使います。また使わないと作れません。最初のimportでは、どのクラスを利用するかを、フルネームで指定します。そうしておけば、使うときに長ったらしいフルネームを指定する必要がなくなります。普通ここにはたくさんのimportが並びます。

 後は自分でクラスを作っていきます。これらのクラスも、後で別のプログラムを作るとき利用できます。そのときはやはりimportで指定してやったりします。こうしてJava共通の財産以外にも、あなた独自のクラスという財産がどんどん増えていくのです。

どこから始まるの?

 運動会ならば、最初に書いてある入場行進から始まるのが常識。ではJavaのプログラムはどこが始まりなのか?...心配無用です。ちゃんと決まりがあって、そこから始まります。まずはごくシンプルなプログラムから見ていきましょう。パソコンの画面にただ

 Hello, Java!

と表示するだけの、つまらないプログラムです。我慢しましょう。

public class Hello {
 public static void main(String[] args) {
  System.out.println("Hello, Java!");
 }
}

 このクラスの名前はHelloです。おやおや、さっきのimportがないですね。では他のクラスを使っていないのでしょうか?いいえ、あんまりよく使うクラスは特にimportで指定しなくても利用できるようになっているのです。ここではjava.lang.Systemというクラスを使っています。詳しくは後ほど。

 クラスHelloの中身は、mainという名前のメソッドです。メソッドはクラスの中にいくつでも書けます。先ほどの「どこから始まるか?」の疑問ですが、実はJavaのプログラムはメソッドmainから始まる決まりになっています。メソッドとは何か、とか、コーディングの規則や名前の付け方は、後ほどのお楽しみ。


どこにしまうの?

 上のプログラムは、Hello.javaという名前のファイルにしまってください。クラス名の後ろに拡張子としてjavaが付きます。コンパイルは

  javac Hello.java

です。拡張子のjavaは余分のようですが必要です。ここでHello.classというコンパイル済みファイルが出来上がります。実行は

  java Hello

と今度は拡張子のclassはいりません。気をつけましょう。

2+3=?

 ではもう少し難しいプログラムを見てみましょう。といってもタイトルにあるように「2+3」を計算するだけなんですけどね。でもこれを応用すれば「123+345」だって「555-222」だってできるんですから...

public class Add {
 public static void main(String[] args) {
  int a, b, c;
  a = 2;
  b = 3;
  c = a + b;
  System.out.println(a + "+" + b + "=" + c);
 }
}


 なんと画面には

  2+3=5

と表示されます。
 ここでは細かいことより、変数について理解してほしいのです。aとbとcが変数です。メモリの中にaという名前の付いた箱があって、

  a = 2;

でその箱に2が入るというイメージです。bの箱には3が入り、

  c = a + b;

ではaやbの箱の中身が計算に使われ、変数cには5が入るというわけです。箱の中に直接2や3が入るということを覚えておいてください。

 もうひとつ大事なことがあります。それは3行目の

  int a, b, c;

の部分です。これは変数aとbとcがintですよ、という宣言です。整数値データ(小数点の付かない数値データ)を扱うときにintを使います。




2.5+0.1=?

 では小数点の付いたデータを扱うときはどうしたらいいのでしょうか?簡単です。intのかわりにdoubleを使いましょう。こんな具合です。

public class Add {
 public static void main(String[] args) {
  double a, b, c;
  a = 2.5;
  b = 0.1;
  c = a + b;
  System.out.println(a + "+" + b + "=" + c);
 }
}


 Javaで扱えるデータの型は、大きく基本データ型(プリミティブ型ともいう)と、参照型の二通りに分けられます。intやdoubleは基本データ型で、下のような型があります。基本データ型の変数は、その中に直接データの値を覚えます。参照型は違うんですね。後でやりましょう。

boolean true(真)かfalse(偽)のみ扱う場合
char  1文字分だけ
byte  1バイト分だけ
short  絶対値の小さい整数値
int   整数値
long  絶対値の大きい整数値
float  有効桁の少なくていい実数値
double  実数値

たったこれだけ?

 booleanは結果がイエスかノーかになるような条件を扱うとき使います。
 charは1文字分なので、名前や住所などの、複数文字のデータ(文字列データという)を扱うときは、他の方法を使います。

 整数値を大量に扱うので、メモリが心配ということならshort、普通はintでいいです。ただしintで扱える数値はだいたいマイナス20億からプラス20億くらいなので、我が家の家計簿には足りないわ、という方はlongを使ってください。

 小数点のついたデータ(実数値データといいます)を扱うのはdoubleです。もしメモリが心配な場合はfloatを使ってください。


 booleanからdoubleまで8この型がありました。ええっ!これだけ...と絶句している方もいるかと思います。
 複素数をよく使うんだけど複素数型は?   ありません  人の名前を覚えたいんだけど、1文字じゃ困る。たくさん文字を記憶できる型は?   ありません
 商品データとして、バーコードと販売価格と商品名を扱いたいんだけど、商品型は?   ありません

 ただし基本データ型の中にはない、ということなので、ご安心を。さっきチラッと出てきた参照型の中のクラス型を使えばいいのです。ただしクラス型の場合、自分で定義しなくてはならないのが少し面倒。そのかわり人だって、猫だって、車だって定義できる。もちろんよく使われるクラスはあらかじめ定義されているので、それをどんどん使えばよい。人の名前などの文字列は、Stringというクラスが用意されています。

 次は参照型の中のクラス型を見ていきましょう。いよいよクラスの登場です。