以下は Java の「文(statement)」と空白・改行の扱い を噛み砕いて説明したものです。実際に手を動かせる練習問題(解答・解説付き)も用意しています。さあやってみましょう!
1) 基本の考え方:文(statement)って何?
- 「文(statement)」は プログラムの命令の1つ分。人間の文章でいう「一文」に相当します。
- Java では 文の終わりにセミコロン
;をつける のがルールです。セミコロンがないとコンパイルエラーになります。 - 文は書かれた順(上から下)に実行されます。例えば
printlnが3つあれば、順番通りに出力されます。
System.out.println("A");
System.out.println("B");
System.out.println("C");
// 出力: A B C(順に改行されて表示される)
Java2) セミコロン ; の重要性
- 例:セミコロンがないとエラー
System.out.println("Hello") // ← ; がない → コンパイルエラーになる
System.out.println("World");
Java- 正しくは:
System.out.println("Hello");
System.out.println("World");
Java3) ブロック { ... } と実行のまとまり
- 複数の文をグループ化して 1つの「ブロック」 にします。例えばメソッド本体や
ifの中身などで使います。
if (true) {
System.out.println("ここはブロック内");
System.out.println("続けて実行");
}
Java{と}が始まりと終わりを示します。
4) 空白(スペース)・改行は自由だけど「途中で切らない」
- Java はキーワードや識別子(クラス名・変数名など)の途中でない限り、スペースや改行を自由に入れてOKです。つまり見やすくするために自由に改行・インデントしていいということ。
// OK(改行・インデントしてある)
System.out
.println("改行しても大丈夫");
// NG(識別子を途中で区切っている例) — コンパイルエラー
Sys tem.out.println("ダメ"); // "Sys tem" は無効
Java5) 文字列(”…”)内の改行は特別
- 文字列内でそのまま改行するときは
\nを使います(改行コード)。複数行の文字列は Java 13+ の Text Blocks(""")もありますが、まずは\nを覚えれば十分。
System.out.println("1行め\n2行め");
Java6) 見やすさのためのルール(実務でよく使う)
- インデント(字下げ)は 半角スペース2〜4つ またはタブ1つが一般的。統一することが大切。
- 中括弧
{の置き方もプロジェクトによってスタイルが違う(同じ行に置くか次の行に置くか)→ どちらでも動くが チームで統一 する。 - IDE(Eclipse, IntelliJ IDEA など)を使うと自動で整形してくれるので便利。
例題(基礎) — 手を動かしてみよう
例題1:次のコードの出力を答えよ
public class Main {
public static void main(String[] args) {
System.out.println("A");
System.out.println("B");
System.out.println("C");
}
}
Java予想:
A
B
C
例題2:次のコードに何箇所エラーがあるか、または正しく動くか答えよ
public class Main {
public static void main(String[] args) {
System.out.println("Hello")
Sys tem.out.println("Oops");
System.out.println("Bye");
}
}
Javaヒント:セミコロン・識別子の途中(スペース)に注目。
例題3:改行を使っても正しく動く例・駄目な例
- 正しい例(改行あり):
System
.out
.println("OK");
Java- 間違いの例(識別子を途中で切っている):
St ring x = "hello"; // NG
Java練習問題(解答付き・詳しい解説)
問1(基本)
次のコードを実行したときの結果を答えよ。
public class Main {
public static void main(String[] args) {
System.out.println("1");
System.out.println("2");
System.out.println("3");
}
}
Java答え:
1
2
3
解説:println が上から順に実行されるだけです。
問2(エラーを見つける)
次のコードはコンパイルエラーになる。どこを直せばよいか書け。
public class Main {
public static void main(String[] args) {
System.out.println("Start")
System.out.println("End");
}
}
Java答え:System.out.println("Start") の末尾にセミコロン ; を付ける。正しくは System.out.println("Start");
解説:各文はセミコロンで終わる必要があるため、セミコロンが無いとコンパイルエラーになります。
問3(識別子の途中に空白を入れてしまった)
次はエラーになる。なぜか?どう直す?
public class Main {
public static void main(String[] args) {
Sys tem.out.println("Hi");
}
}
Java答え:Sys tem のように識別子(System)を途中で分けているためコンパイルエラー。正しくは System.out.println("Hi");
解説:識別子(クラス名や変数名)は途中で空白を入れられない。キーワードや識別子は1つのまとまりで書く。
問4(応用:ブロックとインデント)
次のコードの出力を答えよ。
public class Main {
public static void main(String[] args) {
if (true) {
System.out.println("Inside");
}
System.out.println("Outside");
}
}
Java答え:
Inside
Outside
解説:if (true) の中のブロックが実行され、その後で Outside が出力される。インデントは見やすさのためのもので、実行順には影響しない。
よくある間違いと対策
- セミコロン忘れ → コンパイルエラー(エラーメッセージをよく読む)
- 識別子を途中で区切る(
Sys tem) → コンパイルエラー {と}の対応を忘れる → ブロックの終わりがわからずエラー- 見た目だけで区切ってしまう(インデントだけで分割) → インデントは便利だが構文ではない
対策:小さく動くコードを少しずつ書いてコンパイル・実行を繰り返す。IDE の自動整形と自動補完を使うとエラーを防げます。
練習問題(もう少し難しい — 自分で書いてみる)
mainの中にSystem.out.println("A");とSystem.out.println("B");を改行やインデントをいろいろ変えて書いてみる(動くか確認)。ifを使って、条件がfalseのときに中身が実行されないことを実際に確認するプログラムを作ってみる。- 次の NG パターンをあえて作ってコンパイラエラーメッセージを見て、その意味を調べる:セミコロン忘れ、ブロックの
}忘れ、識別子にスペースを入れる。
まとめ(超かんたんチェックリスト)
- 文の末尾は
;(忘れない) - 文は上から下に実行される
{ ... }でブロックを作る(複数の文をまとめる)- スペースや改行は自由(だが識別子の途中で切ってはダメ)
- 見やすさのためにインデントを揃えよう(IDEの自動整形推奨)
