カテゴリ: Java 更新日: 2026/02/05

Javaの基本文法を徹底解説!プログラムの書き方・ルール・構造を理解しよう

Javaの基本文法を徹底解説!プログラムの書き方・ルール・構造を理解しよう
Javaの基本文法を徹底解説!プログラムの書き方・ルール・構造を理解しよう

先生と生徒の会話形式で理解しよう

生徒

「Javaのプログラムを書き始めたいんですが、基本的な文法やルールがよくわからなくて...」

先生

「Javaには決まった書き方やルールがあります。最初は難しく感じるかもしれませんが、一つずつ理解していけば大丈夫ですよ。」

生徒

「プログラムの構造や文法のポイントを教えてください!」

先生

「それでは、Javaの基本文法を順番に見ていきましょう!」

1. Javaプログラムの基本構造を理解する

1. Javaプログラムの基本構造を理解する
1. Javaプログラムの基本構造を理解する

Javaのプログラムは「クラス」という単位で作られています。まずこのクラスがなければ、Javaのプログラムは一切動きません。初心者の方は「クラス=プログラムの設計図」くらいのイメージで問題ありません。そのクラスの中に、処理のまとまりである「メソッド」を書いていきます。

Javaでは、プログラムを実行すると必ずmainメソッドから処理が始まるというルールがあります。どんなに複雑なアプリでも、最初の入口は必ずmainメソッドです。この決まりを理解することが、Java学習の最初の重要なポイントになります。

次に、最も基本的なJavaプログラムの構造を見てみましょう。クラス名はファイル名と完全に一致させる必要があります。例えば、BasicStructure.javaというファイル名の場合、クラス名も必ずBasicStructureにします。また、Javaは大文字と小文字を厳密に区別するため、Mainmainはまったく別物として扱われる点にも注意しましょう。


public class BasicStructure {
    public static void main(String[] args) {
        System.out.println("Javaプログラムの基本構造");
        System.out.println("mainメソッドから実行されます");
    }
}

上記プログラムを実行すると、次のような結果が画面に表示されます。


Javaプログラムの基本構造
mainメソッドから実行されます

このサンプルでは、public class BasicStructureでクラスを定義し、その中にmainメソッドを書いています。System.out.printlnは、画面に文字を表示するための命令で、Javaでは最初に必ず覚える基本中の基本です。まずは「Javaはこの形から始まる」ということをしっかり覚えておきましょう。

public static void main(String[] args)はJavaプログラムの決まり文句です。意味が完全に理解できなくても、最初はそのまま書けるようになることが大切です。

2. 変数の宣言と初期化の文法

2. 変数の宣言と初期化の文法
2. 変数の宣言と初期化の文法

変数とは、プログラムの中で数値や文字などのデータを一時的に保存しておくための「箱」のようなものです。Javaでは、この箱を使う前に「どんな種類のデータを入れる箱なのか」を必ず指定します。これをデータ型を指定した変数の宣言と呼び、Javaの基本ルールの一つです。

変数の宣言は「データ型 変数名;」という形で書きます。また、宣言と同時に値を入れることを初期化といいます。変数名は英数字とアンダースコアが使えますが、数字から始めることはできません。classpublicなどの予約語も使えないため注意しましょう。

まずは、プログラミング未経験の方でも理解しやすい、シンプルな例を見てみましょう。


public class VariableSample {
    public static void main(String[] args) {
        int age = 20;
        String name = "山田太郎";
        boolean isStudent = true;

        System.out.println("名前: " + name);
        System.out.println("年齢: " + age);
        System.out.println("学生ですか?: " + isStudent);
    }
}

このプログラムでは、int型で年齢、String型で名前、boolean型で「はい・いいえ」の情報を保存しています。変数名を見ただけで意味が分かるようにすると、コードが読みやすくなります。

次に、宣言と代入を分けて書く例です。どちらの書き方も正しく、状況に応じて使い分けます。


public class VariableDeclaration {
    public static void main(String[] args) {
        int number;
        number = 100;

        double price = 1980.50;
        String productName = "ノートパソコン";
        boolean inStock = true;
        char grade = 'A';

        System.out.println("商品名: " + productName);
        System.out.println("価格: " + price + "円");
        System.out.println("在庫数: " + number);
        System.out.println("在庫あり: " + inStock);
        System.out.println("評価: " + grade);
    }
}

Javaの主なデータ型には、整数を扱うint型、小数を扱うdouble型、文字列を扱うString型、真偽値を扱うboolean型、一文字を扱うchar型などがあります。用途に合ったデータ型を選ぶことで、プログラムのミスを防ぎ、効率よく処理できます。

3. 演算子の種類と使い方

3. 演算子の種類と使い方
3. 演算子の種類と使い方

Javaには様々な演算子があり、計算や比較、論理判断などを行います。算術演算子は数値計算に使い、比較演算子は値の大小関係を調べ、論理演算子は複数の条件を組み合わせる際に使用します。

算術演算子

算術演算子には加算(+)、減算(-)、乗算(*)、除算(/)、剰余(%)があります。整数同士の除算では小数点以下が切り捨てられるため注意が必要です。

比較演算子

比較演算子は二つの値を比較して、真偽値を返します。等しい(==)、等しくない(!=)、大きい(>)、小さい(<)、以上(>=)、以下(<=)などがあります。

論理演算子

論理演算子には論理積(&&)、論理和(||)、否定(!)があります。複数の条件を組み合わせて判定する際に使用します。


public class OperatorExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        
        System.out.println("算術演算:");
        System.out.println("a + b = " + (a + b));
        System.out.println("a - b = " + (a - b));
        System.out.println("a * b = " + (a * b));
        System.out.println("a / b = " + (a / b));
        System.out.println("a % b = " + (a % b));
        
        System.out.println("\n比較演算:");
        System.out.println("a == b: " + (a == b));
        System.out.println("a > b: " + (a > b));
        
        System.out.println("\n論理演算:");
        boolean x = true;
        boolean y = false;
        System.out.println("x && y: " + (x && y));
        System.out.println("x || y: " + (x || y));
    }
}

実行結果は以下のようになります。


算術演算:
a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1

比較演算:
a == b: false
a > b: true

論理演算:
x && y: false
x || y: true

4. 制御構文の基本文法

4. 制御構文の基本文法
4. 制御構文の基本文法

制御構文はプログラムの流れを制御するための文法です。条件によって処理を分岐させるif文、複数の条件を効率的に判定するswitch文があります。これらの制御構文を使いこなすことで、複雑な処理を実現できます。

if文の文法

if文は条件式が真のときに処理を実行します。else ifで複数の条件を追加でき、elseでどの条件にも当てはまらない場合の処理を記述します。条件式は必ず括弧で囲み、真偽値を返す式を記述します。

switch文の文法

switch文は一つの値に対して複数の選択肢を判定する際に便利です。各caseの最後にはbreak文を記述して、処理を抜けることを明示します。breakを忘れると次のcaseの処理も実行されてしまうため注意が必要です。


public class ControlStatement {
    public static void main(String[] args) {
        int score = 75;
        String grade;
        
        if (score >= 90) {
            grade = "A";
        } else if (score >= 80) {
            grade = "B";
        } else if (score >= 70) {
            grade = "C";
        } else if (score >= 60) {
            grade = "D";
        } else {
            grade = "F";
        }
        
        System.out.println("点数: " + score);
        System.out.println("評価: " + grade);
        
        int dayOfWeek = 3;
        String dayName;
        
        switch (dayOfWeek) {
            case 1:
                dayName = "月曜日";
                break;
            case 2:
                dayName = "火曜日";
                break;
            case 3:
                dayName = "水曜日";
                break;
            default:
                dayName = "その他";
                break;
        }
        
        System.out.println("\n今日は" + dayName + "です");
    }
}

このプログラムの実行結果です。


点数: 75
評価: C

今日は水曜日です
if文の条件式には必ず真偽値を返す式を書きます。数値を直接書くとコンパイルエラーになるので注意しましょう。

5. 繰り返し処理の文法パターン

5. 繰り返し処理の文法パターン
5. 繰り返し処理の文法パターン

繰り返し処理はプログラミングの基本であり、同じ処理を効率的に実行するために使います。Javaにはfor文、while文、do-while文という三つの繰り返し構文があります。それぞれ特徴が異なるため、状況に応じて使い分けることが大切です。

for文の使い方

for文は繰り返し回数が決まっている場合に適しています。初期化式、条件式、増減式の三つの要素で構成され、カウンタ変数を使って繰り返しを制御します。配列やリストの要素を順番に処理する際によく使われます。

while文の使い方

while文は条件が真である間、処理を繰り返します。繰り返し回数が事前にわからない場合や、特定の条件を満たすまで処理を続けたい場合に使用します。条件式は繰り返しの最初に評価されるため、一度も実行されないこともあります。

do-while文の使い方

do-while文は処理を必ず一回は実行したい場合に使います。条件判定が最後に行われるため、while文とは動作が異なります。ユーザー入力を受け付ける処理などでよく使われます。


public class LoopStatement {
    public static void main(String[] args) {
        System.out.println("for文の例:");
        for (int i = 1; i <= 5; i++) {
            System.out.println(i + "回目の繰り返し");
        }
        
        System.out.println("\nwhile文の例:");
        int count = 1;
        while (count <= 3) {
            System.out.println("カウント: " + count);
            count++;
        }
        
        System.out.println("\ndo-while文の例:");
        int num = 1;
        do {
            System.out.println("数値: " + num);
            num++;
        } while (num <= 3);
        
        System.out.println("\n九九の表(一部):");
        for (int i = 2; i <= 3; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.println(i + " × " + j + " = " + (i * j));
            }
            System.out.println();
        }
    }
}

実行結果は以下の通りです。


for文の例:
1回目の繰り返し
2回目の繰り返し
3回目の繰り返し
4回目の繰り返し
5回目の繰り返し

while文の例:
カウント: 1
カウント: 2
カウント: 3

do-while文の例:
数値: 1
数値: 2
数値: 3

九九の表(一部):
2 × 1 = 2
2 × 2 = 4
2 × 3 = 6
2 × 4 = 8
2 × 5 = 10

3 × 1 = 3
3 × 2 = 6
3 × 3 = 9
3 × 4 = 12
3 × 5 = 15

6. 配列の宣言と使用方法

6. 配列の宣言と使用方法
6. 配列の宣言と使用方法

配列は同じ型のデータを複数まとめて管理するためのデータ構造です。Javaの配列は固定長で、一度作成するとサイズを変更できません。配列を使うことで、大量のデータを効率的に扱うことができます。

配列の宣言には「データ型[] 配列名」という形式を使います。配列の要素にアクセスする際は、インデックス番号を使用します。インデックスは0から始まることに注意が必要です。配列の長さはlengthプロパティで取得できます。

配列の初期化には二つの方法があります。一つはnew演算子を使ってサイズを指定する方法、もう一つは初期値を波括弧で囲んで指定する方法です。初期値を指定した場合、配列のサイズは自動的に決まります。

配列のインデックスは0から始まります。要素数が5の配列のインデックスは0から4までとなるため、範囲外にアクセスするとエラーが発生します。

多次元配列

Javaでは二次元配列や三次元配列なども作成できます。二次元配列は表やマトリックスを表現する際に便利で、行と列の概念を持ちます。多次元配列も通常の配列と同様に、インデックスを使って要素にアクセスします。

7. メソッドの定義と呼び出し

7. メソッドの定義と呼び出し
7. メソッドの定義と呼び出し

メソッドは処理をまとめたもので、プログラムを機能ごとに分割して整理するために使います。メソッドを使うことで、同じ処理を何度も書く必要がなくなり、コードの可読性と保守性が向上します。

メソッドの定義には、アクセス修飾子、戻り値の型、メソッド名、引数リストが必要です。publicprivateなどのアクセス修飾子で、メソッドの公開範囲を制御します。戻り値がない場合はvoidを指定します。

メソッドには引数を渡すことができ、処理結果を戻り値として返すことができます。引数は複数指定することも可能で、データ型と変数名を記述します。メソッドを呼び出す際は、メソッド名の後ろに括弧をつけて、必要な引数を渡します。

メソッドのオーバーロード

同じ名前のメソッドでも、引数の型や個数が異なれば複数定義できます。これをメソッドのオーバーロードと呼びます。オーバーロードを使うことで、似た処理を行うメソッドに統一した名前をつけることができ、プログラムがわかりやすくなります。

メソッド名は動詞で始めることが一般的です。例えば、calculateTotalgetUserNameのように、メソッドが何をするのかがわかる名前をつけましょう。

8. コメントの書き方と重要性

8. コメントの書き方と重要性
8. コメントの書き方と重要性

コメントはプログラムの説明を記述するもので、実行時には無視されます。適切なコメントを書くことで、他の人や未来の自分がコードを理解しやすくなります。Javaには三種類のコメントがあり、用途に応じて使い分けます。

単一行コメント

二つのスラッシュ(//)で始まり、その行の終わりまでがコメントになります。短い説明や、コードの横に補足を書く際に使います。デバッグ時に一時的にコードを無効化する用途でも使われます。

複数行コメント

/*で始まり*/で終わる範囲がコメントになります。複数行にわたる長い説明や、一時的に複数行のコードを無効化したい場合に便利です。ネストはできないため注意が必要です。

ドキュメントコメント

/**で始まり*/で終わるコメントで、メソッドやクラスの説明を記述します。専用のツールを使って自動的にドキュメントを生成できるため、API仕様書の作成に役立ちます。

コメントは適度に書くことが大切です。自明なコードに過剰なコメントをつけると逆に読みにくくなるため、本当に説明が必要な部分にだけコメントを書きましょう。

9. 命名規則とコーディング規約

9. 命名規則とコーディング規約
9. 命名規則とコーディング規約

Javaには推奨される命名規則があり、これに従うことでコードの可読性が向上します。クラス名はパスカルケース(各単語の先頭を大文字)、変数名とメソッド名はキャメルケース(最初の単語は小文字、それ以降は大文字で開始)が一般的です。

クラス名の命名規則

クラス名は名詞で、各単語の先頭を大文字にします。例えば、StudentInfoProductManagerのように記述します。クラス名は意味のある名前をつけることで、そのクラスの役割が明確になります。

変数名とメソッド名の命名規則

変数名は名詞、メソッド名は動詞で始めるのが基本です。最初の単語は小文字で始め、続く単語の先頭を大文字にします。例えば、userNamecalculateTotalのように記述します。短すぎる名前や意味不明な略語は避けましょう。

定数の命名規則

定数は全て大文字で記述し、単語の区切りにアンダースコアを使います。例えば、MAX_SIZEDEFAULT_VALUEのように記述します。定数にはfinalキーワードをつけて、値を変更できないようにします。

インデントと空白の使い方

コードの読みやすさのために、適切なインデントと空白を使います。ブロックの中は一段階インデントを下げ、演算子の前後にはスペースを入れます。一つの行には一つの文だけを書き、長い行は適切に改行します。統一されたスタイルで書くことで、チーム開発でも混乱が生じません。

10. エラーと例外処理の基礎

10. エラーと例外処理の基礎
10. エラーと例外処理の基礎

プログラムの実行中にエラーが発生することがあります。Javaでは例外処理という仕組みを使って、エラーに適切に対応します。例外処理を正しく実装することで、プログラムの安定性と信頼性が向上します。

コンパイルエラーと実行時エラー

コンパイルエラーは文法の誤りなどで発生し、プログラムが実行できません。変数の型の不一致、セミコロンの付け忘れ、括弧の対応ミスなどが原因です。実行時エラーはプログラムの実行中に発生し、ゼロ除算や配列の範囲外アクセスなどが該当します。

try-catch文の使い方

tryブロックに例外が発生する可能性のあるコードを書き、catchブロックで例外を捕捉して処理します。複数のcatchブロックを記述して、異なる種類の例外に対応することもできます。finallyブロックは例外の有無に関わらず必ず実行されます。

よくある例外の種類

NullPointerExceptionはnull参照にアクセスした際に、ArrayIndexOutOfBoundsExceptionは配列の範囲外にアクセスした際に発生します。NumberFormatExceptionは文字列を数値に変換できない場合に、ArithmeticExceptionはゼロ除算などの算術エラーで発生します。

例外を無視してはいけません。最低限でもエラーメッセージを出力するか、適切な処理を行いましょう。空のcatchブロックはバグの原因になります。

Javaの基本文法を理解することは、プログラミング学習の第一歩です。文法やルールを一つずつ確実に身につけることで、より複雑なプログラムを書けるようになります。最初は難しく感じるかもしれませんが、実際にコードを書いて動かしながら学ぶことで、自然と理解が深まっていきます。焦らず着実に学習を進めていきましょう。

関連記事:
カテゴリの一覧へ
新着記事
New1
Quarkus
Quarkusのフォーム認証を基礎から解説!初心者向けセキュリティ入門ガイド
New2
Micronaut
MicronautプロジェクトをGradleで管理する基礎!build.gradleの役割を解説
New3
Micronaut
LinuxでMicronautをセットアップする方法!パッケージ管理とGradle連携
New4
Java
Javaのswitch文を徹底解説!case・defaultの書き方と実例まとめ
人気記事
No.1
Java&Spring記事人気No1
Quarkus
Quarkusプロジェクト構成の基本を完全解説!初心者でも迷わない「どこに何を書くか」ガイド
No.2
Java&Spring記事人気No2
Quarkus
Quarkusのセキュリティ基礎を初心者でもわかるように解説!
No.3
Java&Spring記事人気No3
Quarkus
QuarkusとMicronautとHelidonを徹底比較!軽量Javaフレームワークの違いを初心者向けに解説
No.4
Java&Spring記事人気No4
Quarkus
Quarkusの開発環境構築で躓きやすいポイントを完全解説!初心者でも安心して始めるためのチェックガイド
No.5
Java&Spring記事人気No5
Micronaut
MicronautとSpring Bootの違いとは?アーキテクチャ比較で速さの秘密を理解する
No.6
Java&Spring記事人気No6
Quarkus
Quarkusでマイクロサービス開発が加速する理由を徹底解説!Java初心者でも分かるクラウドネイティブ
No.7
Java&Spring記事人気No7
Micronaut
MicronautのAOPが高速な理由とは?コンパイル時AOPの仕組みを初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Micronaut
Micronautのアプリケーション起動が速い理由を初心者向けに解説