Javaの文法
それではJavaによるプログラミングを勉強していきますが、幾つかの基礎知識を学ぶところから始めます。
予約語
どのようなプログラミング言語でも予約語と呼ばれる特別な単語があります。
予約語とはシステムで予約されている単語のことで、言語仕様の中で特別な意味を持つ単語であり、特定の用途でのみ使用可能となります。
予約語を全て覚える必要はありませんが、代表的な予約語はJavaを学んでいく中で自然と覚えていくでしょう。
Eclipseを使用しているならば、予約語はボールド体で区別されます。
代表的な予約語を以下に示します。
package, class, public, static, byte, char, short, int, long, float, double, boolean, true, false など
文法
Javaも1つのプログラミング言語であり、言語のルール(文法)があります。
Javaの文法はC言語をベースとしている為、C言語を学んだことがあれば大きな違和感を感じることはないでしょう。
ここでは幾つかの要点を解説します。
ブロック
大括弧{}で閉じた範囲をブロックと呼びます。
ブロックは何重にもネストさせることができますが、必ず開始と終了が対応していなければコンパイルエラーとなります。
基本的に最も大きなブロックはクラス宣言の後に続く、クラスのブロックです。
クラスの定義は全てこのブロックの中に記述されます。
終端記号
命令は末端にセミコロン(;)を記述することで成立します。
1行に1命令を記述する
文法的には1行に複数の命令を記述することができますが、可読性が低くなるので推奨されません。
1行に1命令という原則を尊守してください。
mainメソッド
Javaにおいてもプログラムはmainメソッドから始まり、mainメソッドの終わりで終了します。
このようなプログラムの開始地点をエントリーポイントと呼び、プログラムを実行する為には最低でも1つのエントリーポイントが必要です。
ライブラリのように単独で実行することのないクラス郡は原則としてエントリーポイントを持ちません。
C言語では1つのエントリーポイント(main関数)しか定義できませんでしたが、Javaでは全てのクラスにエントリーポイント(mainメソッド)を定義できます。
[Javaのmainメソッド]
public static void main(String[] args) { }
ところで、このmainメソッドはどこに記述するのでしょうか?
アプリケーションの開始地点と言う事は特別な処理ですから、例外的にこんな書き方をするのでしょうか?
package example01; // クラス宣言 public class Example01 { } // mainメソッド public static void main(String[] args) { // ここに全ての処理が書かれる }
Javaはクラスと呼ばれる単位をプログラムの最小構成単位としている為、クラスの外に記述できません。
Javaではmainメソッドはクラス内に記述する必要があります。
次のように修正することでコンパイルが通ります。
package example01; // クラス宣言 public class Example01 { // mainメソッド public static void main(String[] args) { // ここに全ての処理が書かれる } }
実際の開発で作成するプログラムは、基本的に巨大なアプリケーションの一部となります。
クラスは他のクラスから呼び出される事でプログラムは構成される為、アプリケーションにエントリーポイントは原則として1つで充分です。
しかし、各クラスにmainメソッドを作成すればクラス(プログラム)の動作確認ができます。
このやり方はサンプルプログラム等では問題ないのですが、業務アプリケーションであるとすればテストコードが残っているようなものです。
よって、今後のサンプルプログラムではmainメソッドを記述するクラスは切り離して実装することにします。
演習問題
- HelloWorldクラスと同じパッケージにExample01クラスを作成しなさい。
- Example01クラスにmainメソッドを作り、HelloWorldクラスのmainメソッドを移動しなさい。