Java 基本構文

Java プログラムは、一連のオブジェクトの集合と考えることができます。これらのオブジェクトは、互いのメソッドを呼び出すことで連携して動作します。以下で、クラス、オブジェクト、メソッド、インスタンス変数の概念について簡単に説明します。

  • オブジェクト: オブジェクトはクラスのインスタンスであり、状態と振る舞いを持ちます。例えば、犬はオブジェクトです。その状態には色、名前、品種などがあり、振る舞いには尻尾を振る、吠える、食べるなどがあります。
  • 类: クラスはテンプレートであり、ある種類のオブジェクトの振る舞いと状態を記述します。
  • メソッド: メソッドは振る舞いです。クラスは多くのメソッドを持つことができます。論理演算、データ変更、およびすべての動作はメソッド内で実行されます。
  • インスタンス変数: 各オブジェクトは固有のインスタンス変数を持ち、オブジェクトの状態はこれらのインスタンス変数の値によって決まります。

最初のJavaプログラム

次に、文字列を出力する簡単な Java プログラムを見てみましょう。Hello World

例

public class HelloWorld { /*最初のJavaプログラム * 文字列 Hello World を出力します*/ public static void main(String[] args) { System.out.println("Hello World"); //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 つのサイズ以外のジュースを注文できないことを意味します。

例

class FreshJuice { enum FreshJuiceSize{ SMALL, MEDIUM , LARGE } FreshJuiceSize size; } public class FreshJuiceTest { public static void main(String[] args){ FreshJuice juice = new FreshJuice(); juice.size = FreshJuice.FreshJuiceSize.MEDIUM ; } }

注意:列挙型は単独で宣言することも、クラス内で宣言することもできます。メソッド、変数、コンストラクタも列挙型内で定義できます。


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 コンパイラによって無視されます。

public class HelloWorld { /*これは最初のJavaプログラムです * Hello World を出力します * これは複数行コメントの例です*/ public static void main(String[] args){ //これは単行コメントの例です /*これも単行コメントの例です*/ System.out.println("Hello World"); } }

詳細については、以下を参照してください:Java コメント。


Java 空行

空白行やコメントのある行は、Java コンパイラによって無視されます。


継承

Javaでは、クラスは他のクラスから派生することができます。作成したいクラスがあり、そのクラスが必要とする属性やメソッドをすでに持つクラスが存在する場合、新しく作成したクラスにそのクラスを継承させることができます。

継承を利用することで、既存のクラスのメソッドと属性を再利用でき、これらのコードを書き直す必要はありません。継承されるクラスをスーパークラス(super class)と呼び、派生クラスをサブクラス(sub class)と呼びます。


インターフェース

Javaでは、インターフェースはオブジェクト間で相互に通信するためのプロトコルと理解できます。インターフェースは継承において非常に重要な役割を果たします。

インターフェースは派生で使用するメソッドを定義するだけで、メソッドの具体的な実装は完全に派生クラスに依存します。


Java ソースプログラムとコンパイル型実行の違い

下図の通りです:

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

その他の拡張