基本的なプログラムの作成①

<< 実行環境 >>
OS : Windows11
エディター : メモ帳
JDK : OpenJDK 18

プログラムの構造

前回の記事でMain.javaやTest.javaを用意したわけですが、ソースコードにどのようなことを記述できるのかについての説明はしていなかったので、今回はこの点をメインに書いていきたいと思います。
さて、記述できるものなんですが以下の6つになります。

  1. コメント文

  2. パッケージ宣言

  3. インポート宣言

  4. クラス宣言

  5. メソッド定義

  6. 命令文

一応この順番にも意味はあって、数字はそのままソースコードとして記述していける順番を表しています。
つまりパッケージ宣言の前にクラス宣言することはできないし、クラス宣言の前にメソッド定義することはできません。
コメント文はソースコード内の任意の場所で記述でき、パッケージ宣言の前に記述できるのはコメント文のみになります。なので1番目にコメント文と記載していますが、コメント文の記述自体は任意なので必ず書く必要はありません。
処理内容によってはパッケージ宣言やインポート宣言とかは記述自体を省略しても問題ありませんが、Javaプログラムの特性上クラス宣言は必須です。
というわけで、改めてまとめるとこんな感じになります。

  1. コメント文(記述自体は自由)

  2. パッケージ宣言(省略可)

  3. インポート宣言(省略可)

  4. クラス宣言(必須

  5. メソッド定義(必要に応じて)

  6. 命令文(必要に応じて)

パッケージ宣言とインポート宣言については(いつか)別の機会に記事にできたらなと考えているので、今回はクラス宣言・メソッド定義・命令文・コメント文について書いていきたいと思います。


それぞれについての詳細……の前に

それぞれの詳細説明についてさっそく移ってもいいんですが、もしかすると本当にプログラムの事前知識とかが全くない人がこれを読んでいる可能性があるかも……?と思い、ブロックとインデントについて軽くお話しておきたいと思います。
知ってるよ!という方はすっとばしてもらって大丈夫です。

さて、前回の記事で使用したMain.javaを例にすると、こういった内容で構成されたソースコードでした。

コメント文の色が見づらくなってしまってすみません……

プログラムとは上からだーっとただ記述していけばよいというものではありません。「こっからここまでで1つの処理として扱うよ!」と区別させながら記述していく必要があります。
この「こっからここまでで1つの処理として扱うよ!」な範囲のことをブロックといいます。そしてブロックとはつまり処理の範囲のことを指しているので、ブロックの中にブロックを作ることもできます。
じゃあどうやってブロックを指定するの?というと、Javaの場合は中カッコ({  })で囲まれた範囲になります。

Mainクラスというブロックの中に、mainメソッドというブロックがある状態

そんでもって、「これはブロックの中にある文だよ!」というのが(人間側に)一目見てわかるように書き出し位置を右にずらしていくことをインデントといいます。
半角スペース4つ分で1つのインデントという扱いになります。大事なことなので2回言いますがインデントは半角スペース4つ分です。全角スペースは使えません、使うとコンパイルエラーになります。

ブロックの中にブロックができていくたびにインデントも増えていく

ぶっちゃけてしまうとJava言語としてはインデントがなくてもプログラムの動作には全く影響しないんですが、人間(プログラマー)にとってコードの内容をわかりやすくするための、いわゆるお作法的なものなのでインデントは常に意識していくようにしましょう。


それぞれの詳細について

それではクラス・メソッド・命令文・コメント文について簡単に説明していきます。
ちなみにクラスとメソッドについてはオブジェクト指向の学習に入ったときにどうしても深く学んでいかなければならない分野なので、今回は本当にかるーく書いていきます。

① クラス

クラスというのはプログラムの単位のようなものです。
「public class クラス名」という記述でクラス宣言できます(正確に言うとクラス宣言にはclassというキーワードだけが必須なのですが、オブジェクト指向の学習に入るまではひとまず「public class クラス名」という形で覚えて構いません)
そしてクラス宣言には、class以外にもお約束事がいくつか存在します。

 ・クラス名の最初の1文字は大文字アルファベットにする
 ・publicなクラス名とソースファイル名は同じにする

本当はもっといろいろあるんですが、Javaの勉強を始めたばかりの頃に気を付けるべき点はひとまずこの2つかな?と思います(あとで追記するかもしれません)
前回の記事で使用したMainクラスのソースファイル名をMain.javaにしたのはこういったお約束事に従ったためです。

② メソッド

今回はメソッドはメソッドでもmainメソッドについて書いていきます。
メソッドとはざっくり言うといくつかの単純な処理(命令文)をまとめて1つの処理にしたものです。例えば「自分が入力した文字をそのままコンソールに表示させる処理」や「数字を入力したら自動的に(あらかじめ決められている計算式で)計算してくれる処理」があるとしたら、それらを行う為のブロックを指してメソッドと呼ぶ……というとイメージしやすくなりますかね?(※本当にざっくりと話してます)
クラスにはいくつものメソッドを作成できるのですがmainメソッドはプログラムの開始地点となる特別なメソッドで、こういったメソッドのことをエントリーポイントといいます。
エントリーポイントの条件はいろいろあるのですが、いろいろありすぎてJavaに不慣れな人には今書いても混乱させかねないのかもしれないと判断したので、とりあえずは

public static void main(String[] args) {} と書けば問題なし!!

と考えてOKです。投げやりなようですが、実際mainメソッドはエントリーポイントになる条件を全て満たしているメソッドなわけなので……
それにどうせインスタンスの勉強に入ったあたりでいやでも覚えていく羽目になるしな……

③ 命令文

実際にあーしろこーしろという単純な処理内容を記述した文章のことです。プログラムとして考えたときに一番小さな単位のものになり、セミコロン( ; )で終わる文章全般が命令文です。単に文と言うときもあります。
例えば前回の記事で使用したTest.javaには、2つの命令文がありました。

それぞれの文で何をしているのかという詳細は別記事で

ちなみにセミコロンまでが1つの命令文と判断されるので、こういうふうに途中で改行しても問題なくコンパイルはできます(※でも当然のように実行時例外は発生します)

public class Test {
    public static void main(String[] args) {
        int calc = 
        10 / 0;
        System.out.
        println(calc);
    }
}

処理したいことと文法の関係上どうしても長くなってしまう命令文のときなんかは、可読性を上げる為に改行+インデントを適度にしていきます。

④ コメント文

文字通り、コメントになります。プログラムが実行されるときはまるっと無視されるので、処理内容の説明なんかに利用できます。
スラッシュ2つ( // )から始まる記述は単一行コメントと呼ばれるもので、その行の終わりまで全てコメントとして扱われます。

//プログラムは基本的に半角文字しか使えないけどコメントは全角文字も可
public class Test {
    public static void main(String[] args) {
        //コメント文でもインデントは揃えるべし!
        int calc = 10 / 0;      //ここからこの行の最後まで全部コメントになると判断される
        System.out.println(calc);
    }
}

他には複数行コメントやJavadocコメントもあるので、気になる人は調べてみると面白いかもしれませんね。

この記事が気に入ったらサポートをしてみませんか?