【Java初心者向け】Javaを動かしてみよう【5分でわかるmainメソッドとは】

Java

どうも、Solowareです。
今日も元気にITの勉強をしていきましょう!
今回は、Javaの動かし方についてわかりやすく説明しよう思います^^

この記事を読むメリット
  • Javaプログラムの動かし方がわかる
  • mainメソッドの構造がわかる

Javaを動かすためには、初学者にとってとっつきにくい呪文みたいなコードを書く必要があります。
「public static void main(String[] args)」これです。
中身を1つずつ丁寧に解説しますので、完全初学者でもわかるようになってます。

本記事の対象者
  • 既にJavaの環境構築が完成している
  • Javaコードを書いてみたいけど、書き方がわからない
  • Java動かしてみたけど、main関数の仕組みは理解していない

こんな方を対象に記事を書いてますので、当てはまる方はぜひ読んでみてください^^

Javaファイルを作成し、実行してみよう!

では早速、Javaファイルを作成して動かしてみましょう!
まずは、どこの場所でも良いので「Main.java」というファイルを作成しましょう!
Javaのファイルでは、拡張子を「.java」にしておく決まりがあるので注意してください。

作成したら、さっそく下記をコピペして作成した「Main.java」ファイルに貼り付けましょう!

public class Main {

    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

この段階では何がなんだかわからなくて問題なしです^^

コピペが終わったら保存して、Macの方は「Terminal」・Windowsの方は「コマンドプロンプト」を開きましょう!

開いたら「cd 」(cdの後ろは半角スペースが入ります)と入力した状態で「Main.java」ファイルが入っているフォルダをドラッグ&ドロップしましょう!

そしたらEnterを押します。
これ、何をしてるかというと「Main.java」ファイルが入っているフォルダの場所に移動しています。
Javaとは関係ないので、「ふーん」でOKです^^

こんな感じですね。
あとは、Javaファイルを実行していきます!
このコマンドを実行してみましょう。

javac Main.java

これは、Main.javaファイルの内容をコンピュータが理解できるようにしてあげるコマンドです。
すると、「Main.class」というファイルが生成されたと思います。
あとは、この「Main.class」ファイルを実行してやります。

java Main

はい!このように出力されれば成功です。
こんな感じでJavaのプログラムを動かすことができました^^

Javaファイルの中身を見ていこう

では、先ほどコピペしたJavaファイルの中身を詳しく見ていきましょう。

public class Main {

    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

まず、1行目の「public class Main」ってやつです。
Javaファイルの中には必ず1つ以上のクラス(class)が必要になります。
クラス名は、好きなものをつけられるんですが、原則ファイル名と同じものをつけるようにしましょう!
今回は「Main.java」というファイル名なので「Main」がクラス名になります。
クラス名の前に記述されている「public」ってやつですが、これは「アクセス修飾子」と呼ばれるもので、その名の通りアクセス可能なレベルを表します。
ここを「public」にしておくことで、どこからでも(どのフォルダからでも)アクセスができるクラスということを意味しています。

はい、以上で1行目の説明は終わりです。
「public class Main」は「どこからでもアクセスできるMainという名前のクラスですよ」というのを意味しています。

では、次に3行目を見てみましょう。
「public static void main(String[] args)」ですね
これは「メソッド」と呼ばれるものです。

メソッドの書き方は「アクセス修飾子」+「戻り値」+「メソッド名」+「(引数)」という構造になってます。
Javaを実行するときは、必ずこの「main」という名前のメソッドが必要になります。
この「mainメソッド」は、いわばJavaのスタート地点なんです。

では、メソッドの構成を順に見ていきましょう!
アクセス修飾子が「public」になってます。
これは、このメソッドは「違うファイルから呼び出すことができるよ」ということを意味しています。
注意が必要なのは、先ほどのクラスにつけたアクセス修飾子とは定義が少し違うところです。
アクセス修飾子はクラスにつくのか、メソッドにつくのかでその意味が変わってきます。

戻り値は「void」となっています。
戻り値というのは、メソッドが呼ばれた後に何かデータを返す時の値という意味になります。
今回の場合、メソッドが呼ばれても何もデータを返さないので、「void」というものになっています。

そして、「main」というのがメソッド名になります。

最後に引数ですね。
引数というのは、メソッドが呼ばれた時に受け取ることができるデータです。
この「mainメソッド」は「String[]」というデータを受け取ることができるメソッドということになります。
「String[]」は配列というデータタイプで、連続した複数のデータを扱うことができます。
「args」というのは、「String[]」というデータをmainメソッドでは「args」という変数名として扱いますよということです。

ぶっちゃけここは「args」でなくてもなんでもOKですが、標準で「args」となってるので合わせておきましょう。
今回の例では、特にこの引数の値は使っていないのでわかりづらいと思いますので
記事の最後に「args」を使ったパターンも扱ってますので、よかったらみてみてください。

以上で、3行目の説明は終わりです。
ちなみにメソッドやクラスは「{}」で囲ってやる必要がありますので注意してくださいね。

あ、そうそう。この「mainメソッド」には「static」というのがついてますよね。
これがついたメソッドは「クラスメソッド」と呼ばれまして、「インスタンスメソッド」と区別するために使われます。
この辺りは少々ややこしくなるので説明は割愛しますが、「mainメソッド」は「クラスメソッド」っていわれるもんなんだなーぐらいの理解でOKです^^

最後に4行目です。
「System.out.println(“Hello World!”);」
これがプログラムで実行する処理になります。

プログラムで実行する処理は、必ず最後に「;」をつける必要があります。

この「System.out.println()」ですが、これも実はメソッドです。
「System.out.pringln(“好きな文字”)」の形で、使われます。
このメソッドは引数に受け取った値(今回の場合「Hello World」)をターミナル上に出力するというメソッドです。
この「””」で囲まれた箇所に好きな文字を入れられて、実行した時にその文字を表示させることができるんですね。

試しに、違う文字を入力してみましょう。

public class Main {

    public static void main(String[] args){
        System.out.println("Soloware Logs!");
    }
}

書き換えたら、保存して下記コマンドを実行していきます。

javac Main.java
java Main

はい、書き換わりましたね!
以上で「mainメソッド」の説明は終わりになります。
ざっと説明してみましたが、いかがでしたでしょうか?
おめでとうございます!
「mainメソッド」について理解していただけたかと思います^^

mainメソッドの引数argsを使ってみる

最後に、「mainメソッド」の引数の値を使った処理を紹介しておきます。
なぜ「mainメソッド」の引数が「String[]」の配列のデータになっているのかが理解できると思います。

では、Main.javaの中身をこんな感じで書き換えてください。

public class Main {

    public static void main(String[] args){
        System.out.println("Soloware Logs!");
        System.out.println(args[0]);
        System.out.println(args[1]);
        System.out.println(args[2]);
    }
}

配列のデータには連続した値が入っているため、こんな感じで「変数名[数字]」でそれぞれのデータにアクセスします。
注意が必要なのは、数字が「0」から始まるということです。
「args[0]」で1つめのデータにアクセスすることができ、それを「System.out.println()」メソッドの引数に渡してやることで、そのデータがターミナル上に出力されるという処理になります。
今回は、3つのデータを配列から取得するような構成になってます。

では、実際に「Main.java」を実行してみます。

javac Main.java
java Main

するとどうでしょう。「Solwoare Logs!」と出力された後に、こんなエラーになると思います。

これは、「mainメソッド」の引数にデータがないのに「System.out.println(args[0]);」でデータにアクセスしに行ったためエラーとなっています。
では、どのようにして「mainメソッド」の引数にデータを渡すのでしょうか。

次のコマンドをターミナル上で叩いてみてください。

java Main first second third

するとどうでしょう。
こんな感じで出力されたと思います。
「mainメソッド」はこうやって引数にデータを渡すことができます。

ただ一点だけ覚えておいてください。
「mainメソッド」以外のメソッドも全て、このようにして引数にデータを渡すわけではありません。
先ほど話した「System.out.println()」メソッドを思い出して欲しいんですけど
通常、メソッドの引数としてデータを渡したい場合は、「()」の中にデータを入れてやるだけでOKです。
この「mainメソッド」だけが特別なんですね。
理由は、この「mainメソッド」を呼び出す箇所というのが「java Main」のコマンドを実行した時だけだから。
そして、その引数にいくつデータが渡されるかわからないのでデータタイプが「String[]」という配列になっています。

いろいろ細かく説明しましたが、最初はあまり深く考える必要はないです。
「mainメソッド」ってのは特別なんだなーぐらいでOKです^^
ぶっちゃけ「mainメソッド」の引数を使うプログラムを書くことはほぼないので安心してください。

まとめ

最後にこの記事の内容をまとめておこうと思います。

  • Javaを動かすには、クラスを定義する必要がある
  • mainメソッドはどこからでもアクセスできる
  • mainメソッドは戻り値を持たない
  • mainメソッドの引数は「String[]」という配列のデータタイプ
  • mainメソッドの引数にデータを渡す際は、「java」コマンド実行時に渡す

僕のブログでは、Javaを未経験からでもマスターできるように
できるだけわかりやすく記事を書いていきます。

よかったら引き続き読んでいただければと思います。

ほいじゃねー^^

タイトルとURLをコピーしました