「Java」 3つのメソッド”Java API” “自作メソッド” “mainメソッド” とな何なのか?

Coffee

Javaのメソッドとはよく出てくる言葉ですが、一体何を意味する要素なのでしょうか?

「クラス内の方法、操作を担当するもの?!」

とりあえずはその認識でも問題はないと思います。今回はそんなメソッドの領域にそこから一歩、二歩と踏み込んでみました。

SPONSORED LINK

photo by OliBac

▼この記事の目次

  1. メソッドとは?
  2. Javaで用意されているメソッド
  3. 自作メソッド
  4. mainメソッド
  5. この記事のまとめ

メソッドとは?

クラスという設計図の中にはフィールド、メソッドと定義する事が出来ます。メソッドというのは操作、方法など内容がまとまっている処理をまとめて繰り返し使えるようにしたものです。

メソッドには3つの種類があります。

  • Javaで用意されているメソッド
  • 自作メソッド
  • mainメソッド

この3つのメソッドをどんなものなのか順番に見ていきましょう。

Javaで用意されているメソッド

Javaには機能を持ったメソッドが沢山用意されています。この用意されているメソッドを使う事で全て一からコードを書かなくても実装された機能を利用する事ができるのです。しかも事前に用意されている機能なので誰が書いても同じ機能の動作をします。

「System.out.println」という文字列を出力するためにプリントラインをよく使いますよね?

実はこれJavaで用意されているメソッドで、Java API (Application Program Interface) で提供されています。printlnメソッドです。他にもキーボードの整数入力を受け付けるための「nextInt」も用意されているメソッドです。

その他にもJava APIとして提供されているメソッドに何があるのかを確認したい場合は「Java(tm) Platform Standard Edition 8 | 日本語版」からドキュメント内部をブラウザ上で確認する事が出来ます。

また全部一度に覚える必要はないですし、その都度必要な時に覚えるというスタンスで問題ないと思います。

自作メソッド

事前に用意されているJava APIにはない動作は自作メソッドとして作る事ができます。プログラムの目的に合致するメソッドを作るという事です。

staticを使用するクラスメソッドとインスタンスメソッドとあります。この2種類のメソッドの違いは、staticを使うか使わないかの違いはもちろんですが他にも明確な違いがあります。

クラスメソッドはインスタンスを参照しないメソッドでクラス内から呼び出すメソッド。newを使いません。

一方インスタンスメソッドはインスタンスから参照するメソッドです。用意するにはnewを使いインスタンス化する必要があります。

クラスメソッド

static修飾子 戻り値 メソッド名(引数1,引数2 …){
命令内容;
retrun文;
}
メソッドの書式は例外もあるようですが基本は上記のような型になるので覚えておいて下さい。簡単な例を作ってみます。

▼このコードの意味を文章で説明すると上のmainメソッドが下のメソッドを呼び出してxに2、yに3の値を初期化、結果戻り値として出力しています。

public static void main(String[] args){
    int test = method(2 , 3);
    System.out.println(test);
}
static int method(int x, int y){
    int sum = x*y;
    return sum;
}
public static void main(String[] args){
    //内容
}

>

上のコードだとmainメソッドにメソッドを呼んでいると言えますし、6という戻り値が返ってくるとも言えます。また、逆に戻り値を返さない場合はvoidで定義します。

public static void main(String[] args){
    method2();
}
static void method2(){
    String s = "戻り値を返さない";
    System.out.println(s);
}

アクセス修飾子

アクセス修飾子というのはメソッド以外にも、クラス・フィールドに付けて指定するものです。

publicって見覚えありませんか?その部分です。ようするにパッケージ内クラスのアクセス制限の事でpublic以外にも種類があります。

ちなみに上のクラスメソッドのコードは

private static int method(int x, int y)

    //または
public static int method(int x, int y)

と書く事も出来るのです。とりあえずpublicはどこのパッケージからもどこからでもアクセス可能、privateはクラス内でのアクセスに制限したものと覚えておけば問題ないでしょう。何も書かない場合はデフォルトとして扱われます。

メソッド名

メソッド名はクラス名、変数名と同じように「識別子 (identifier)」を付ける事になります。

識別子のルール

  • 1文字目のみ数字が使用できない使用できる記号は半角で「¥ (ドルマーク)」
  • 「_ (アンダーバー)」のみアルファベットの大文字
  • 小文字は区別する (「予約語」public → Public ならOK)

【予約語の一覧】詳しくは「識別子 | 予約語一覧」にてご確認を

また、メソッド名にはある決められたルールがあり「a」や「b」のアルファベットではなく、しっかり意味のある英単語で書くようです。

書き方は先頭が小文字、続けて書く2つ目の単語が大文字からで変数名をメソッド名に含める場合は変数名のつづり通りにします。

例えばクラス名は大文字からなのでメソッド名は小文字からでまわりと区別するという事ですね。英語がわからない場合はこのような変数名、関数名などを付ける場合に参考にできるWEBサービスが探せばいくつかあります。

mainメソッド

mainメソッドは自動的に呼ばれるメソッドです。コンパイル (javac) してjavaコマンドで実行した時に最初に一度呼び出されるのがmainメソッドです。
▼この部分でmainメソッドを定義していて { } がmainメソッドの内容です。

public static void main(String[] args){
    //内容
}

動作で確認

少し動作で確認してみましょう。単語を抜いたり順番を変えたり全ての組み合わせを試した結果・・

どれ一つ抜いてもエラーになってしまいます。

それもそのはず、mainメソッドは「public」「static」「void」「String」という決まった定義方法をする必要があるのです。

public
全てのクラスからアクセスできるという事
static
固定という意味。

void
戻り値がない

ただし「public static」を逆にし「static public」ではコンパイル→実行と問題なく動作しました。ただ、試した中ではこれ以外の並びだとエラーになってしまいました。

static public void main(String[] args){} //正常に動作する

この記事のまとめ

今回の記事は最初、形のあるプログラムを軽い気持ちで作る予定でした。

しかし・・

「アクセス修飾子って?」「カプセル化って?」「戻り値って?」

「インスタンス化って?」からの→「メモリのスタック・ヒープって?」

「戻り値って?」「コンストラクタって?」「メンバメソッドって?」「…って?」「..って?」「..って?」「って?」

そして巻き戻り「public static void main ..って?」

・・と、「って?」という題名の記事を書きたくなる位に「って?」のオンパレードでした。やはり基礎から徹底して覚えて、複数の基礎知識を複合的に組み合わせないとわからないという事がわかりました。とりあえずメソッドから書いてみました。

関連記事




この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitterでめちゃログをフォローしよう!