Java道|Javaコードのしくみと実行の流れ

Javaコードは、少し変えるだけで動きの見え方が変わる。
コメント、文の数、実行順序を追いながら、mainメソッドの流れを理解しよう。

Javaのコードは、ただ文字が並んでいるだけではありません。

どこから処理が始まり、どの命令がどの順番で実行され、どのように結果が画面に表示されるのかという、はっきりした流れがあります。

今回は、変更前の Sample1.java を、変更後の Sample1.java に変える例を使って、Javaコードのしくみを見ていきます。変更後のコードでは、コメントの内容が変わり、画面に表示する文が1つから2つに増えています。そのため、mainメソッドの中で文が上から順番に実行されることや、println によって1行ずつ表示されることが、より分かりやすくなっています。

鬼滅の刃の世界観にたとえるなら、変更前のコードは「最初の一太刀」を確認する型、変更後のコードは「二つの動きを順番に放つ型」です。

Javaコードの要素鬼滅風のたとえ
class Sample1技の型を収める巻物の名前
mainメソッド技が始まる合図
System.out.println画面に言葉を放つ技
1つ1つの動作
ブロック技の範囲を囲む結界
コメント修行内容を説明するメモ
インデント型の流れを見やすく整える姿勢

変更前と変更後を確認しよう

まず、変更前の Sample1.java を確認します。

ファイル名:Sample1.java(変更前)

class Sample1
{
    public static void main(String[] args)
    {
        // 最初の修行メッセージを表示する
        System.out.println("Java修行の第一歩です。");
    }
}

このコードでは、mainメソッドの中に表示命令が1つあります。

実行すると、画面には次のように表示されます。

Java修行の第一歩です。

次に、Sample1.java を以下のように変更します。

ファイル名:Sample1.java(変更後)

// Java修行の開始メッセージを表示するプログラム
class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

変更後のコードを実行すると、画面には次のように表示されます。

Java修行を始めます。
一歩ずつコードの型を覚えます。

変更後では、表示されるメッセージが2行になりました。
これは、mainメソッドの中に System.out.println の文が2つ書かれているからです。

変更した点を整理しよう

変更前と変更後の違いを表で整理すると、次のようになります。

変更点変更前変更後
コメントの位置mainメソッドの中クラス定義の前
コメントの内容最初の修行メッセージを表示するJava修行の開始メッセージを表示するプログラム
表示命令の数1つ2つ
表示内容Java修行の第一歩です。Java修行を始めます。 / 一歩ずつコードの型を覚えます。
実行結果1行表示2行表示

今回の変更で特に大切なのは、次の3つです。

注目したい変更学べること
コメントをプログラム全体の説明に変えたコメントは人が読むための説明であること
printlnの文を2つに増やした文が上から順番に実行されること
表示結果が2行になったprintlnは表示後に改行すること

鬼滅風にたとえるなら、変更前は「一つの型を一度だけ放つ」コードです。
変更後は「二つの型を順番に放つ」コードです。

1つ目の文で Java修行を始めます。 と表示し、2つ目の文で 一歩ずつコードの型を覚えます。 と表示します。
この順番が、そのまま画面の表示順になります。

変更後のSample1.javaの全体を見てみよう

この記事では、変更後の Sample1.java を中心に解説します。

ファイル名:Sample1.java

// Java修行の開始メッセージを表示するプログラム
class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

このコードには、Javaの基本的なしくみがしっかり入っています。

確認したいこと内容
処理はどこから始まるのかmainメソッドから始まる
どこまでが実行される範囲かmainメソッドのブロック内
どの順番で命令が動くのか上から順番に実行される
なぜ2行表示されるのかprintlnの文が2つあるから
コメントは実行されるのか実行されない

変更後のコードでは、System.out.println が2つあるため、文の実行順序を確認しやすくなっています。

Javaの処理はmainメソッドから始まる

Javaのプログラムでは、基本的に mainメソッド から処理が始まります。

変更後のSample1.javaでは、次の部分です。

public static void main(String[] args)

この行は、Javaにとって特別な意味を持つ場所です。
プログラムを実行すると、Javaはまず main という名前の付いた場所を探し、そこから処理を始めます。

最初の段階では、public、static、void、String[] args の細かい意味をすべて覚えなくても大丈夫です。

まずは、次のように理解しましょう。

記述今の段階での理解
mainプログラムの開始地点
mainメソッド実行される処理を書く場所
mainメソッドの中上から順番に命令が実行される

鬼滅風にたとえるなら、mainメソッドは技を始める号令です。

巻物の中にいろいろな説明や構造があっても、実際に技が始まる場所は決まっています。
Javaでは、その入口が mainメソッド です。

mainメソッドの中に実行される文を書く

変更後の Sample1.java では、mainメソッドの中に2つの文があります。

System.out.println("Java修行を始めます。");
System.out.println("一歩ずつコードの型を覚えます。");

この2つの文が、実際に画面表示を行います。

順番役割
1System.out.println("Java修行を始めます。");1行目を表示する
2System.out.println("一歩ずつコードの型を覚えます。");2行目を表示する

Javaでは、基本的に文は上から順番に実行されます。

そのため、1つ目の文が先に実行され、そのあとで2つ目の文が実行されます。

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

Java修行を始めます。
一歩ずつコードの型を覚えます。

このように、書いた順番と表示される順番が対応しています。

変更後のコードが2行表示になる理由

変更前のコードでは、printlnの文が1つだけでした。

System.out.println("Java修行の第一歩です。");

そのため、実行結果も1行だけでした。

Java修行の第一歩です。

一方、変更後のコードでは、printlnの文が2つあります。

System.out.println("Java修行を始めます。");
System.out.println("一歩ずつコードの型を覚えます。");

printlnは、表示したあとに改行する命令です。

そのため、1つ目のprintlnで1行目が表示され、2つ目のprintlnで2行目が表示されます。

printlnの文表示内容表示後の動き
1つ目Java修行を始めます。改行する
2つ目一歩ずつコードの型を覚えます。改行する

つまり、変更後のコードで2行表示される理由は、次の通りです。

理由内容
printlnの文が2つある表示命令が2回実行される
文が上から順番に実行される1行目、2行目の順に表示される
printlnは改行するそれぞれ別の行に表示される

鬼滅風に言えば、2つの技を順番に放ち、それぞれの技のあとに構え直しているイメージです。

コメントは人が読むための説明

変更後のコードでは、先頭にコメントがあります。

// Java修行の開始メッセージを表示するプログラム

コメントは、プログラムの説明を書くためのものです。
コンピュータが実行する命令ではありません。

Javaでは、// からその行の終わりまでがコメントとして扱われます。

記述役割
// から始まる行コメントとして扱われる
実行されるか実行されない
主な目的人が読みやすくするための説明

変更前では、コメントはmainメソッドの中にありました。

// 最初の修行メッセージを表示する

変更後では、プログラム全体を説明するコメントとして、class Sample1 の前に置いています。

// Java修行の開始メッセージを表示するプログラム

このように、コメントは場所によって説明する範囲の印象が変わります。

コメントの位置説明しやすい内容
プログラムの先頭プログラム全体の目的
mainメソッドの中その近くの処理の目的
複雑な処理の前なぜその処理をするのか

鬼滅風にたとえるなら、コメントは修行ノートです。
実際の技として放たれるわけではありませんが、何をする型なのか、どこに注意するのかを記録しておくことで、あとから理解しやすくなります。

ブロックは処理のまとまりを表す

Javaでは、中カッコ { } で囲まれた部分をブロックと呼びます。

変更後の Sample1.java では、主に2つのブロックがあります。

class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}
ブロック役割
class Sample1 のブロッククラス全体のまとまり
mainメソッドのブロック実行される処理のまとまり

外側に class Sample1 のブロックがあります。
その中に mainメソッド のブロックがあります。
そして、mainメソッドの中に2つの文があります。

つまり、Javaコードは箱の中にさらに箱があるような構造になっています。

鬼滅風にたとえるなら、外側のブロックは道場全体、内側のブロックは実際に技を出す修行場です。
その修行場の中に、1つ1つの動きである文が並んでいます。

文とは何かを知っておこう

Javaでは、1つ1つの小さな処理の単位を 文 と呼びます。

変更後の Sample1.java では、次の2つが文です。

System.out.println("Java修行を始めます。");
System.out.println("一歩ずつコードの型を覚えます。");

Javaの文の多くは、最後に ; を付けて終わります。
この ; はセミコロンと呼ばれ、ここで1つの文が終わることを示します。

項目内容
Javaの処理の小さな単位
文の終わり多くの場合 ; を付ける
実行順序原則として上から順番に実行される

セミコロンを忘れると、Javaは文がどこで終わるのか判断できず、コンパイルエラーになることがあります。

鬼滅風に言えば、セミコロンは型の終わりを示す印です。
終わりの印がないと、技の一動作がどこで終わるのか分からなくなります。

図:mainメソッドから実行される流れ

↓クリックすると拡大表示されます。

この図は、変更後の Sample1.java が mainメソッドから始まり、その中の2つの文が上から順番に実行される流れを表しています。

この図から分かることは、Javaコードはどこからでも自由に実行されるのではなく、mainメソッドという開始地点から処理が始まるということです。

また、System.out.println が2つ並んでいる場合、1つ目、2つ目の順に実行されることも分かります。
コメントは説明用のメモなので、実行結果には表示されません。

図:ブロック構造

↓クリックすると拡大表示されます。

この図は、変更後の Sample1.java が意味のあるまとまりごとに構成されていることを表しています。

この図から分かることは、Javaでは class のブロックの中に mainメソッド のブロックがあり、その中に実行される文が入っているということです。

初心者のうちは、どの } がどの { に対応しているのか迷いやすいです。
しかし、ブロックを箱として見ると、外側の箱、内側の箱、その中の文という関係が理解しやすくなります。

文は上から順番に処理される

Javaの基本では、文は原則として上から順番に1つずつ処理されます。

変更後の Sample1.java では、次の順番で文が並んでいます。

System.out.println("Java修行を始めます。");
System.out.println("一歩ずつコードの型を覚えます。");

この場合、画面には次の順番で表示されます。

Java修行を始めます。
一歩ずつコードの型を覚えます。

では、表示する順番を入れ替えるとどうなるでしょうか。

ファイル名:Sample1.java

// 実行順序の違いを確認するプログラム
class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("一歩ずつコードの型を覚えます。");
        System.out.println("Java修行を始めます。");
    }
}

この場合、実行結果は次のようになります。

一歩ずつコードの型を覚えます。
Java修行を始めます。

書く順番を変えると、実行される順番も変わります。

書いた順番表示される内容
1番目一歩ずつコードの型を覚えます。
2番目Java修行を始めます。

このように、Javaでは書いた順番がとても大切です。

鬼滅風に言えば、型の動きの順番を入れ替えれば、技の流れも変わります。
Javaでも、文をどの順番で書くかによって、実行結果が変わります。

改行してもよいのは読みやすくするため

Javaコードは、読みやすくするために適切な場所で改行できます。

たとえば、変更後のコードを1行に詰め込んで書くことも、形式としては可能な場合があります。

class Sample1 { public static void main(String[] args) { System.out.println("Java修行を始めます。"); System.out.println("一歩ずつコードの型を覚えます。"); } }

しかし、これではとても読みにくいです。

どこが class のまとまりなのか。
どこが mainメソッド なのか。
どの文がどこにあるのか。

一目で分かりません。

そのため、通常は次のように、ブロックごとに改行して書きます。

class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}
書き方特徴
1行に詰め込む読みにくく、構造が分かりづらい
改行して整えるブロックや文の位置が分かりやすい

Javaでは、改行や空白がプログラムの意味そのものを変えない場合もあります。
しかし、コードの読みやすさには大きく影響します。

鬼滅風に言えば、型の動きを整理して見せるようなものです。
動きが整っていれば、どこからどこまでが1つの型なのかが分かりやすくなります。

インデントは読みやすさのための大切な工夫

コード中で、行頭を少し右に下げて書くことを インデント といいます。

変更後の Sample1.java では、mainメソッドの中の文が右に下がっています。

class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

この字下げがあることで、どの文が mainメソッド の中にあるのかが分かりやすくなります。

インデントの役割内容
ブロックの内側を見やすくするどこがまとまりの中身か分かる
コードの構造をつかみやすくする入れ子関係が見やすくなる
読み間違いを減らす対応する { } を見つけやすい

Javaでは、空白や改行が意味を変えない場合もあります。
しかし、インデントが整っていると、人が読みやすくなります。

プログラムはコンピュータだけが読むものではありません。
自分自身や、将来一緒に開発する人も読みます。

そのため、見やすいコードを書く習慣はとても大切です。

空白や改行にはルールと自由さがある

Javaでは、空白や改行を入れられる場所と、入れてはいけない場所があります。

たとえば、意味のある単語の途中で改行したり、空白を入れたりするのは正しくありません。

pub lic static void main(String[] args)

public を途中で分けているため、これは正しい書き方ではありません。

一方で、言葉と言葉の区切りや、ブロックの区切りでは、空白や改行を使って読みやすくできます。

書き方よいかどうか理由
public static void mainよい単語ごとに区切られている
pub lic static void mainよくないpublicを途中で分けている
ブロックごとに改行するよい構造が見やすい
すべて1行に詰め込む動く場合もあるが読みにくい人が理解しにくい

Javaコードには、ルールと自由さの両方があります。

好き勝手に書いてよいわけではありません。
でも、読みやすさのために改行やインデントを工夫することはできます。

文字列の中では勝手に改行できない

コードそのものは、読みやすくするために改行できます。

しかし、文字列の中では自由に改行できません。

たとえば、次のように文字列の途中でそのまま改行してしまうと、正しい書き方になりません。

System.out.println("Java修行を
始めます。");

文字列は、開始の " から終了の " までをひと続きで書く必要があります。

正しく書くなら、次のように1行で書きます。

System.out.println("Java修行を始めます。");
注意点内容
コードの改行読みやすさのために使える
文字列の途中の改行そのままではできない
文字列" " で囲んでひと続きとして書く

ここは、コードの改行と表示したい文字の改行を混同しやすい部分です。

鬼滅風にたとえるなら、巻物の余白を整えることはできますが、技の名前そのものを途中で切ってしまうと別物になってしまう、というイメージです。

コードを読むときの見方を身につけよう

Javaコードを読むときは、いきなり細かい意味をすべて追うよりも、次の順番で見ると理解しやすくなります。

見るポイント確認する内容
クラス名どのプログラムなのか
mainメソッドどこから処理が始まるか
ブロックどこまでがひとまとまりか
どんな命令が並んでいるか
実行順序上からどの順番で動くか

変更後の Sample1.java なら、次のように見ます。

見る場所確認すること
class Sample1Sample1というクラス
mainメソッドここから処理が始まる
mainの { }実行される範囲
2つのprintlnの文画面に2行表示する命令
上から順Java修行を始めます。のあとに一歩ずつコードの型を覚えます。が表示される

この見方に慣れると、短いサンプルだけでなく、少し長いコードも読みやすくなっていきます。

Javaコードは見た目の整理も大切

プログラムは、動けばそれでよいというものではありません。

もちろん、正しく動くことは大前提です。
しかし、それと同じくらい、読みやすく書くことも大切です。

特にJavaでは、ブロック構造が多くなりやすいため、改行やインデントが乱れていると、どこからどこまでが同じまとまりなのか分かりにくくなります。

今のうちから、次のことを意識しておきましょう。

意識したいこと理由
ブロックの始まりと終わりをそろえる対応する { } が分かりやすくなる
ブロックの中はインデントする中身が見やすくなる
文ごとに改行する処理の単位を追いやすくなる
コメントを使って意図を補足するあとで見返したときに理解しやすい

鬼滅風に言えば、読みやすいコードは、型の流れが美しく整っている状態です。
構えが整っていれば、動きも追いやすくなります。

Javaコードも同じです。
見た目を整えることで、処理の流れを理解しやすくなります。

Javaコードのしくみを理解すると次の学習が楽になる

ここまで見てきた内容は、Javaのとても基本的な動きです。

基本のしくみ内容
mainメソッドから始まるプログラムの開始地点を理解する
文が順番に実行される処理の流れを追える
ブロックでまとまりを表すコードの構造を理解できる
コメントは実行されない説明文と命令を区別できる
改行やインデントで読みやすくする人が理解しやすいコードになる

今回の変更によって、1つの表示文だけでなく、2つの文が順番に実行される様子を確認できるようになりました。

変更前では、Java修行の第一歩です。という1行だけを表示していました。
変更後では、Java修行を始めます。と一歩ずつコードの型を覚えます。の2行を表示します。

この違いから、Javaでは mainメソッドの中の文が上から順番に実行されること、そして println が1回ごとに改行することがよく分かります。

これから変数、計算、条件分岐、繰り返しなどを学ぶときにも、Javaコードの基本の流れは変わりません。

まずmainメソッドから始まる。
その中の文が順番に実行される。
ブロックでまとまりを表す。
読みやすさのために改行やインデントを整える。

この感覚を身につけておくと、次の学習がぐっと楽になります。