1.

Java 基本構文ルール完全ガイド(命名規則・main・コメント・コンパイル)

編集
この記事の要点
  • Java の基本ルール: 文末セミコロン必須、大文字小文字区別 (case sensitive)、ファイル名 = public クラス名 + .java
  • 命名規則: クラスは PascalCase変数/メソッドは camelCase定数は SNAKE_CASE
  • エントリポイント: public static void main(String[] args)
  • コメントは // (行)、/* */ (ブロック)、/** */ (Javadoc)
  • 推奨スタイル: Google Java Style Guide または Oracle Code Conventions

Java の基本構文ルール

Java は C 系の文法を継承した静的型付け / クラスベースのオブジェクト指向言語です。記述ルールを 1 つでも守らないとコンパイルエラーになるため、最初に押さえるべきポイントを整理します。

1. ファイル名とクラス名

1 つの .java ファイルには通常 1 つの public クラスを書き、ファイル名はそのクラス名 + .java と完全一致させます。

// ファイル名: Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

// ファイル名が hello.java や Hello.JAVA だとコンパイル失敗
// → error: class Hello is public, should be declared in a file named Hello.java

2. 文末セミコロンと大文字小文字

  • 文 (statement) の終端は必ず ;。改行だけでは終わりにならない
  • Java は case sensitive: Stringstring は別物 (後者は型として存在しない)
  • キーワード (class, public, void) はすべて小文字

3. 命名規則 (Naming Convention)

対象規則
クラス / インタフェースPascalCase (UpperCamelCase)UserService, HttpClient
メソッド / 変数camelCase (lowerCamelCase)getUserName(), userId
定数 (static final)SNAKE_CASE (UPPER_SNAKE_CASE)MAX_RETRY, DEFAULT_PORT
パッケージ全小文字、ドット区切り、ドメイン逆順com.example.app
型パラメータ (Generics)1 文字大文字T, E, K, V
列挙型 (enum) 値SNAKE_CASEACTIVE, SUSPENDED

4. main メソッド (エントリポイント)

public class App {
    // 必須シグネチャ: public static void main(String[] args)
    public static void main(String[] args) {
        // args はコマンドライン引数 (java App foo bar → args = ["foo", "bar"])
        for (String a : args) {
            System.out.println(a);
        }
    }
}

// Java 21+ では Unnamed Class & Instance Main Methods で省略可能 (Preview)
void main() {
    System.out.println("Hello");
}

5. コメント 3 種類

// 1行コメント (行末まで)

/*
 * 複数行コメント
 * ブロック全体が無視される
 */

/**
 * Javadoc コメント。クラス・メソッド・フィールドの上に書く。
 * javadoc コマンドで HTML ドキュメントを生成できる。
 *
 * @param name 利用者名
 * @return 挨拶文
 * @throws IllegalArgumentException name が null の場合
 * @since 1.0
 */
public String greet(String name) {
    return "Hello, " + name;
}

6. package と import

// ファイル先頭: パッケージ宣言 (省略するとデフォルトパッケージ)
package com.example.app.service;

// import 文 (パッケージ宣言の直後)
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import static java.lang.Math.PI;   // static import で PI を直接使える

public class UserService {
    private List<String> users = new ArrayList<>();

    public double area(double r) {
        return PI * r * r;   // Math.PI と書かなくて良い
    }
}

7. コンパイルと実行

# 単一ファイル
javac Hello.java        # → Hello.class
java Hello              # 実行

# パッケージ付き (src/com/example/App.java)
javac -d out src/com/example/App.java
java -cp out com.example.App

# Java 11+ : ソース直接実行
java Hello.java

# Maven プロジェクト
mvn compile
mvn package             # → target/*.jar
mvn exec:java -Dexec.mainClass=com.example.App

# Gradle プロジェクト
./gradlew build
./gradlew run

8. エンコーディング

Java ソースは UTF-8 で書くのが現代の標準。javac -encoding UTF-8 を明示するか、Maven / Gradle 設定で UTF-8 を指定しないと、Windows 環境で文字化けの原因になります。

<!-- Maven pom.xml -->
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

9. 推奨スタイルガイド

ガイド特徴
Google Java Style Guide2 スペースインデント、行 100 文字。OSS 系で多い
Oracle Code Conventions古いが基本。4 スペースインデント、行 80 文字
Checkstyle / SpotBugs / PMD静的解析でルール強制
google-java-formatGoogle スタイルで自動整形 (IntelliJ プラグイン有)

FAQ

Q: ファイル名とクラス名は必ず一致?
A: public クラスは一致が必須。public でないクラスを補助的に同じファイルに置くのは可能ですが、可読性のため 1 ファイル 1 公開クラスが推奨。

Q: セミコロンを忘れた場合のエラーは?
A: error: ';' expected。次の行も巻き込んで複数のエラーが出ることが多いので、最初の 1 件を直してから再コンパイル。

Q: String[] argsString args[] でも良い?
A: 両方コンパイル可能ですが、型の後ろに [] が現代スタイル。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 基本的なルール
  2. データ型
  3. 変数
  4. 定数
  5. 配列
  6. コレクション(List,Set,Queue)
  7. Map(連想配列)
  8. 演算子
  9. 条件分岐
  10. 繰り返し制御文
  11. クラス
  12. メソッド
  13. インスタンス化
  14. コンストラクタ
  15. staticキーワード
  16. オーバーロード
  17. 継承
  18. オーバーライド
  19. this
  20. super
  21. パッケージ
  22. アクセス修飾子
  23. 抽象クラス・メソッド
  24. インターフェース
  25. カプセル化
  26. データベース接続
  27. セッション
  28. ファイル入出力
  29. ラムダ式

最近更新/作成されたページ