Java プログラムは、互いのメソッドを呼び出して連携して動作するオブジェクトのコレクションと考えることができます。以下に、クラス、オブジェクト、メソッド、インスタンス変数の概念を簡単に紹介します。
オブジェクト: オブジェクトはクラスのインスタンスであり、状態と動作を持ちます。たとえば、犬はオブジェクトです。そのステータスには、色、名前、品種が含まれます。また、その行動には、尻尾を振る、吠える、食べるなどがあります。
クラス: クラスは、オブジェクトのクラスの動作とステータスを記述するテンプレートです。
メソッド: メソッドは動作であり、クラスには多くのメソッドを含めることができます。論理演算、データ変更、およびすべてのアクションはメソッド内で完了します。
インスタンス変数: 各オブジェクトには固有のインスタンス変数があり、オブジェクトの状態はこれらのインスタンス変数の値によって決まります。
Hello World という文字列を出力する単純な Java プログラムを見てみましょう。
パブリック クラス MyFirstJavaProgram {
/* 最初の Java プログラム。
* 文字列「Hello World」が出力されます。
*/
public static void main(String []args) {
System.out.println("Hello World"); // Hello World を出力します。
}
}
このプログラムを保存、コンパイル、実行する方法についてのステップバイステップのガイドは次のとおりです。
メモ帳を開き、上記のコードを追加します。
ファイル名を MyFirstJavaProgram.java として保存します。
cmd コマンド ウィンドウを開き、ターゲット ファイルの場所を C: と仮定して入力します。
コマンド ライン ウィンドウに javac MyFirstJavaProgram.java と入力し、Enter キーを押してコードをコンパイルします。コードにエラーがない場合、cmd コマンド プロンプトは次の行に進みます。 (環境変数がすべて設定されていると仮定します)。
次に、「java MyFirstJavaProgram」と入力し、Enter キーを押してプログラムを実行します。
ウィンドウに Hello World が表示されます
C :> javac MyFirstJavaProgram.java
C :> java MyFirstJavaProgram
こんにちは世界
Java プログラムを作成するときは、次の点に注意する必要があります。
大文字と小文字の区別: Java では大文字と小文字が区別されます。つまり、識別子 Hello と hello は異なります。
クラス名: すべてのクラスで、クラス名の最初の文字を大文字にする必要があります。クラス名が複数の単語で構成されている場合は、MyFirstJavaClass のように、各単語の最初の文字を大文字にする必要があります。
メソッド名: すべてのメソッド名は小文字で始まる必要があります。メソッド名に複数の単語が含まれる場合、後続の各単語の最初の文字が大文字になります。
ソースファイル名: ソースファイル名はクラス名と同じである必要があります。ファイルを保存するときは、ファイル名としてクラス名を使用し (Java では大文字と小文字が区別されることに注意してください)、ファイル名の接尾辞 .java を使用する必要があります。 (ファイル名とクラス名が異なる場合はコンパイルエラーになります)。
Main メソッド エントリ: すべての Java プログラムはpublic static void main(String [] args)
メソッドから実行を開始します。
Java のすべてのコンポーネントには名前が必要です。クラス名、変数名、メソッド名はすべて識別子と呼ばれます。
Java 識別子に関しては、次の点に注意してください。
すべての識別子は文字 (AZ または az)、ドル記号 ($)、またはアンダースコア (_) で始まる必要があります。
最初の文字の後には、文字 (A ~ Z または a ~ z)、ドル記号 ($)、アンダースコア (_)、または数字を任意に組み合わせて続けることができます。
キーワードを識別子として使用することはできません
識別子は大文字と小文字が区別されます
法的識別子の例: age、$salary、_value、__1_value
不正な識別子の例: 123abc、-salary
他の言語と同様、Java は修飾子を使用してクラス内のメソッドとプロパティを変更できます。修飾子には主に 2 つのタイプがあります。
アクセス制御修飾子: デフォルト、パブリック、プロテクト、プライベート
非アクセス制御修飾子: Final、abstract、static、synchronized、volatile
Java 修飾子については後の章で詳しく説明します。
Java には主に次の種類の変数があります。
ローカル変数
クラス変数(静的変数)
メンバー変数 (非静的変数)
配列はヒープに保存されるオブジェクトであり、同じ型の複数の変数を保持できます。後の章では、配列を宣言、構築、初期化する方法を学びます。
Java 5.0 では、変数を事前設定された値に制限する列挙型が導入されました。列挙型を使用すると、コード内のバグを減らすことができます。
たとえば、ジュース店向けに、ジュースを小、中、大のカップに制限するプログラムを設計します。つまり、顧客はこれら 3 サイズ以外のジュースを注文できないということになります。
クラス FreshJuice {
enum FreshJuiceSize{ SMALL、MEDIUM、LARGE }
FreshJuiceSize サイズ;
}
パブリック クラス FreshJuiceTest {
public static void main(String args[]){
FreshJuice ジュース = new FreshJuice();
ジュース.サイズ = FreshJuice.FreshJuiceSize.MEDIUM;
}
}
注:列挙型は個別に宣言することも、クラス内で宣言することもできます。メソッド、変数、コンストラクターは列挙型で定義することもできます。
Java の予約語を以下に示します。これらの予約語は、定数、変数、および識別子の名前には使用できません。
キーワード | 説明する |
---|---|
抽象的な | 抽象メソッド、抽象クラスの修飾子 |
アサート | 条件が満たされているかどうかをアサートする |
ブール値 | ブールデータ型 |
壊す | ループまたはラベルコードセグメントから抜け出す |
バイト | 8 ビット符号付きデータ型 |
場合 | switch ステートメントの条件 |
キャッチ | 例外情報のキャプチャを試みるときに使用します。 |
文字 | 16 ビット Unicode 文字データ型 |
クラス | クラスの定義 |
定数 | 未使用 |
続く | ループ本体の残りの部分は実行しないでください |
デフォルト | switch ステートメントのデフォルト分岐 |
する | ループ ステートメント。ループ本体は少なくとも 1 回実行されます。 |
ダブル | 64ビット倍精度浮動小数点数 |
それ以外 | if 条件が true でない場合に実行される分岐 |
列挙型 | 列挙型 |
伸びる | あるクラスが別のクラスのサブクラスであることを示します |
ファイナル | 初期化後に値を変更できないこと、またはクラスがサブクラスを持つことができないことを示します。 |
ついに | 主にプログラムの堅牢性と整合性を目的として、コードの実行を完了するように設計されており、コードは例外が発生したかどうかに関係なく実行されます。 |
フロート | 32ビット単精度浮動小数点数 |
のために | forループ文 |
後藤 | 未使用 |
もし | 条件文 |
実装する | クラスがインターフェイスを実装していることを示します |
輸入 | インポートクラス |
インスタンスの | オブジェクトがクラスのインスタンスであるかどうかをテストする |
整数 | 32ビット整数 |
インタフェース | インターフェイス、メソッドと定数の定義のみを含む抽象型 |
長さ | 64ビット整数 |
ネイティブ | 表現メソッドは非 Java コードで実装されています |
新しい | 新しいクラスインスタンスを割り当てます |
パッケージ | 一連の関連クラスがパッケージを形成します |
プライベート | クラス内からのみアクセスできるプライベートフィールド、メソッドなどを示します。 |
保護された | フィールドには、クラス、そのサブクラス、または同じパッケージ内の他のクラスを通じてのみアクセスできることを示します。 |
公共 | 共通のプロパティまたはメソッドを表します |
戻る | メソッドの戻り値 |
短い | 16桁 |
静的 | クラスレベルで定義され、すべてのインスタンスによって共有されるものを表します。 |
厳密なFP | 浮動小数点比較では厳密なルールが使用されます |
素晴らしい | 基本クラスを表します |
スイッチ | select ステートメント |
同期した | 一度に 1 つのスレッドのみがアクセスできるコードのブロックを表します。 |
これ | 現在のインスタンスを呼び出すか、別のコンストラクターを呼び出すことを示します |
投げる | 例外をスローする |
投げる | メソッドによってスローされる可能性のある例外を定義する |
一時的な | シリアル化されないようにフィールドを変更する |
試す | コード ブロックが例外を処理する必要があること、または、finally と連携して、例外がスローされたかどうかに関係なく、finally のコードが実行されることを示す必要があることを示します。 |
空所 | Mark メソッドは値を返しません |
揮発性の | タグフィールドは、同期せずに複数のスレッドによって同時にアクセスされる可能性があります |
その間 | while ループ |
C/C++ と同様に、Java も単一行および複数行のコメントをサポートします。コメント内の文字は Java コンパイラによって無視されます。
パブリック クラス MyFirstJavaProgram{
/* これは最初の Java プログラムです *Hello World が出力されます
* これは複数行コメントの例です */
public static void main(String []args){
// これは 1 行コメントの例です /* これも 1 行コメントの例です */
System.out.println("Hello World");
}
}
空白行またはコメントのみの行は、Java コンパイラによって無視されます。
Java では、クラスを他のクラスから派生させることができます。クラスを作成するときに、必要なプロパティまたはメソッドを持つクラスがすでに存在する場合は、そのクラスから新しく作成したクラスを継承できます。
継承を使用すると、コードを書き直すことなく、既存のクラスのメソッドとプロパティを再利用できます。継承されたクラスをスーパークラス、派生クラスをサブクラスと呼びます。
Java では、インターフェイスはオブジェクト間の通信のためのプロトコルとして理解できます。インターフェイスは継承において非常に重要な役割を果たします。
インターフェイスは派生クラスで使用されるメソッドのみを定義しますが、メソッドの具体的な実装は完全に派生クラスに依存します。
次のセクションでは、Java プログラミングのクラスとオブジェクトを紹介します。その後、Java のクラスとオブジェクトをより明確に理解できるようになります。