Java 基本構文
Java プログラムは、一連のオブジェクトの集合と考えることができます。これらのオブジェクトは、互いのメソッドを呼び出すことで連携して動作します。以下で、クラス、オブジェクト、メソッド、インスタンス変数の概念について簡単に説明します。
- オブジェクト: オブジェクトはクラスのインスタンスであり、状態と振る舞いを持ちます。例えば、犬はオブジェクトです。その状態には色、名前、品種などがあり、振る舞いには尻尾を振る、吠える、食べるなどがあります。
- 类: クラスはテンプレートであり、ある種類のオブジェクトの振る舞いと状態を記述します。
- メソッド: メソッドは振る舞いです。クラスは多くのメソッドを持つことができます。論理演算、データ変更、およびすべての動作はメソッド内で実行されます。
- インスタンス変数: 各オブジェクトは固有のインスタンス変数を持ち、オブジェクトの状態はこれらのインスタンス変数の値によって決まります。
最初のJavaプログラム
次に、文字列を出力する簡単な Java プログラムを見てみましょう。Hello World
例

以下で、このプログラムを保存、コンパイル、実行する方法を段階的に説明します。
- コードエディタを開き、上記のコードを追加します。
- ファイル名を HelloWorld.java として保存します。
- cmd コマンドウィンドウを開き、対象ファイルがある場所(例: C:\)に移動します。
- コマンドラインウィンドウで次のように入力します。javac HelloWorld.javaEnter キーを押してコードをコンパイルします。コードにエラーがなければ、cmd のコマンドプロンプトは次の行に移動します(環境変数がすべて設定されていると仮定します)。
- 次に次のように入力します。java HelloWorldEnter キーを押すとプログラムが実行されます。
ウィンドウに Hello World が表示されます。
$ javac HelloWorld.java $ java HelloWorld Hello World
エンコーディングの問題が発生した場合は、次のものを使うことができます。-encodingオプション設定utf-8を指定してコンパイルします。
javac -encoding UTF-8 HelloWorld.java java HelloWorld
GIF 図によるデモ:
基本構文
Java プログラムを作成する際は、以下の点に注意してください。
- 大文字小文字の区別: Java は大文字と小文字を区別します。つまり、識別子 Hello と hello は異なるものを指します。
- クラス名: すべてのクラスにおいて、クラス名の先頭文字は大文字にする必要があります。クラス名が複数の単語で構成される場合は、各単語の先頭文字を大文字にします。例:MyFirstJavaClass 。
- メソッド名: すべてのメソッド名は小文字で始める必要があります。メソッド名に複数の単語が含まれる場合、後続の各単語の先頭文字は大文字にします。
- ソースファイル名: ソースファイル名はクラス名と同じでなければなりません。ファイルを保存するときは、クラス名をファイル名として使用してください(Java は大文字小文字を区別することに注意)。ファイル名の拡張子は.javaです。(ファイル名とクラス名が異なる場合はコンパイルエラーになります。)
- メインメソッドのエントリポイント: すべての Java プログラムはpublic static void main(String[] args)メソッドから実行を開始します。
Java 識別子
Java のすべての構成要素には名前が必要です。クラス名、変数名、メソッド名はすべて識別子と呼ばれます。
Java の識別子について、以下の点に注意する必要があります。
- すべての識別子は、英字(A-Z または a-z)、ドル記号($)、またはアンダースコア(_)で始まる必要があります。
- 最初の文字の後には、英字(A-Z または a-z)、ドル記号($)、アンダースコア(_)、または数字の任意の組み合わせを使用できます。
- キーワードは識別子として使用できません。
- 識別子は大文字と小文字を区別します。
- 有効な識別子の例: age、$salary、_value、__1_value
- 無効な識別子の例: 123abc、-salary
Java 修飾子
他の言語と同様に、Java では修飾子を使用してクラス内のメソッドやプロパティを修飾できます。主に 2 種類の修飾子があります。
- アクセス制御修飾子: default, public, protected, private
- 非アクセス制御修飾子: final, abstract, static, synchronized
後の章で Java 修飾子について詳しく説明します。
Java 変数
Java には主に次の種類の変数があります。- ローカル変数
- クラス変数(静的変数)
- メンバー変数(非静的変数)
Java 配列
配列はヒープ上に格納されるオブジェクトで、同じ型の複数の変数を保持できます。後の章で、配列の宣言、構築、初期化の方法を学びます。
Java 列挙型
Java 5.0 で列挙型が導入されました。列挙型は、変数を事前に設定された値のみに制限します。列挙型を使用するとコードのバグを減らせます。
例えば、ジュース店向けのプログラムを設計する場合、ジュースのサイズを小、中、大に制限します。つまり、顧客はこの 3 つのサイズ以外のジュースを注文できないことを意味します。
例
注意:列挙型は単独で宣言することも、クラス内で宣言することもできます。メソッド、変数、コンストラクタも列挙型内で定義できます。
Java キーワード
以下に Java のキーワードを示します。これらの予約語は、定数、変数、および識別子の名前には使用できません。
| カテゴリ | キーワード | 説明 |
|---|---|---|
| アクセス制御 | private | プライベート |
| protected | プロテクト | |
| public | パブリック | |
| default | デフォルト | |
| クラス、メソッド、変数の修飾子 | abstract | 抽象を宣言 |
| class | 类 | |
| extends | 拡張、継承 | |
| final | 最終値、変更不可 | |
| implements | 実装(インターフェース) | |
| interface | インターフェース | |
| native | ローカル、ネイティブメソッド(Java 以外での実装) | |
| new | 生成 | |
| static | 静的 | |
| strictfp | 厳密浮動小数点、正確な浮動小数点 | |
| synchronized | スレッド、同期 | |
| transient | 一時的 | |
| volatile | 揮発性 | |
| プログラム制御文 | break | ループを抜ける |
| case | switch で選択するための値を定義 | |
| continue | 続行 | |
| do | 実行 | |
| else | それ以外 | |
| for | ループ | |
| if | もし | |
| instanceof | インスタンス | |
| return | 戻る | |
| switch | 値に基づいて実行を選択 | |
| while | ループ | |
| エラーハンドリング | assert | 式が真であることをアサートする |
| catch | 例外を捕捉する | |
| finally | 例外の有無にかかわらず実行 | |
| throw | 例外オブジェクトをスローする | |
| throws | 例外がスローされる可能性があることを宣言する | |
| try | 例外を捕捉 | |
| パッケージ関連 | import | インポート |
| package | 包 | |
| 基本型 | boolean | ブール型 |
| byte | バイト型 | |
| char | 文字型 | |
| double | 倍精度浮動小数点 | |
| float | 単精度浮動小数点 | |
| int | 整数型 | |
| long | 長整数型 | |
| short | 短整数型 | |
| 変数参照 | super | 親クラス、スーパークラス |
| this | このクラス | |
| void | 戻り値なし | |
| 予約キーワード | goto | キーワードだが使用できない |
| const | キーワードだが使用できない |
注意:Java の null はキーワードではなく、true や false と同様にリテラル定数であり、識別子として使用することはできません。
Java コメント
C/C++ と同様に、Java も単行コメントと複数行コメントをサポートしています。
コメント内の文字は Java コンパイラによって無視されます。
詳細については、以下を参照してください:Java コメント。
Java 空行
空白行やコメントのある行は、Java コンパイラによって無視されます。
継承
Javaでは、クラスは他のクラスから派生することができます。作成したいクラスがあり、そのクラスが必要とする属性やメソッドをすでに持つクラスが存在する場合、新しく作成したクラスにそのクラスを継承させることができます。
継承を利用することで、既存のクラスのメソッドと属性を再利用でき、これらのコードを書き直す必要はありません。継承されるクラスをスーパークラス(super class)と呼び、派生クラスをサブクラス(sub class)と呼びます。
インターフェース
Javaでは、インターフェースはオブジェクト間で相互に通信するためのプロトコルと理解できます。インターフェースは継承において非常に重要な役割を果たします。
インターフェースは派生で使用するメソッドを定義するだけで、メソッドの具体的な実装は完全に派生クラスに依存します。
Java ソースプログラムとコンパイル型実行の違い
下図の通りです:

次の節では、Javaプログラミングにおけるクラスとオブジェクトを紹介します。その後、Javaのクラスとオブジェクトについてより明確に理解できるようになります。
その他の拡張