タイトル: 基本的なルール
SEOタイトル: Java 基本構文ルール完全ガイド(命名規則・main・コメント・コンパイル)
| この記事の要点 |
|
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:
Stringとstringは別物 (後者は型として存在しない) - キーワード (
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_CASE | ACTIVE, 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 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 環境で文字化けの原因になります。
UTF-8
17
17
9. 推奨スタイルガイド
| ガイド | 特徴 |
|---|---|
| Google Java Style Guide | 2 スペースインデント、行 100 文字。OSS 系で多い |
| Oracle Code Conventions | 古いが基本。4 スペースインデント、行 80 文字 |
| Checkstyle / SpotBugs / PMD | 静的解析でルール強制 |
| google-java-format | Google スタイルで自動整形 (IntelliJ プラグイン有) |
FAQ
Q: ファイル名とクラス名は必ず一致?
A: public クラスは一致が必須。public でないクラスを補助的に同じファイルに置くのは可能ですが、可読性のため 1 ファイル 1 公開クラスが推奨。
Q: セミコロンを忘れた場合のエラーは?
A: error: ';' expected。次の行も巻き込んで複数のエラーが出ることが多いので、最初の 1 件を直してから再コンパイル。
Q: String[] args は String args[] でも良い?
A: 両方コンパイル可能ですが、型の後ろに [] が現代スタイル。