一番かんたんなJava入門

これからJavaを始めようという人の為の超入門サイトです。丁寧、簡単にこだわった解説なので初心者にぴったりです

【Java】 メソッドの定義と呼び出し

time 2013/03/11

sponsored link

メソッドの基本形

 メソッドとは何なのか?一言で言えば何らかの一塊の処理を行う為の仕組みです。

 それだけでは何のことやら分からないと思いますが、メソッドについてどんなに懇切丁寧に説明されてもなかなか初心者が全てを理解することは難しいと思います。

 実際書いてみる、使ってみることでだんだんと理解できるので、とりあえず書き方、使い方を覚えましょう。

 まずメソッドの形ですが、

メソッド名( )

 このようにメソッドには必ず後ろに( )がついています。

 メソッドは自分でその処理内容を定義して自由に作ることができます。( )のさらに後ろに{ }を書いてその中に処理内容を書きます。

メソッド名( ) { 処理内容 }

 このような形で、そのメソッドの処理内容を定義します。

メソッドの処理内容を定義する
       ↓
そのメソッドを実際に使う(処理内容を実行する)

 という大まかな仕組みをまずは理解できるように頑張りましょう。

勝手に呼ばれるmainメソッド

 ところで、メソッドと言えば何度も登場してますよね。mainメソッドというやつです。

 mainメソッドもその名の通りメソッドの一つです。

 今までプログラムの実行文はmainメソッドのブロック内に書いていましたが、mainメソッドのブロック内というのは、mainメソッドの処理内容を書くところなんです。今まで変数やらif文やら配列やらを使って書いていたのは、mainメソッドの処理内容を定義していたわけです。

 そしてmainメソッドを定義したclassを実行すると、そのmainメソッドの処理内容が実行される。というのが今までのところです。

 なぜ、classを実行するとmainメソッドの処理内容が実行されるかと言うと、classを実行するとそこに書いてあるmainメソッドが自動的に呼ばれるようになっているからなんです。

 メソッドを呼ぶというのは、要はその処理内容を実行するということです。

 ここら辺は初心者が頭混乱しがちなポイントだと思います。全てを理解しようとせず、とにかく何となく大まかに理解するように努めてください。

 こちらをご覧下さい。MethodTestというclassです。

MethodTest.java

public class MethodTest{
   public static void main(String[] args){
      System.out.println("mainメソッドが呼ばれました");
   }
}

 このMethodTestクラスのmainメソッドの処理内容は、

System.out.println("mainメソッドが呼ばれました");

です。

 この何度も出てきている「System.out.println()」というのもメソッドなのですが、ここでは単にコンソールに文字列を出力するための表記だと思っておきましょう(深入り厳禁です)

 要するに、このmainメソッドが呼ばれると「mainメソッドが呼ばれました」と出力されます。これでmainメソッドが呼ばれたらすぐ分かりますね。

 この状態で、このMethodTestクラスを実行すると、

methodtest1

 このように「mainメソッドが呼ばれました」と出力されます。つまりmainメソッドが呼ばれているのが分かると思います。

 クラスを実行するとはそのクラスのmainメソッドを呼ぶということなんです。

 分かったような分からんような・・。と思いながらでも進んでください。

メソッドを定義する

 上記のMethodTestクラスに書いてあるのは、mainメソッドの定義です。それだけです。それ以外には何もありません。

 mainがあるならsubもあっても良いだろうということで、同じようにsubメソッドも作りましょう。

MethodTest.java

public class MethodTest{
   public static void main(String[] args){
      System.out.println("mainメソッドが呼ばれました");
   }

   public static void sub(){
      System.out.println("subメソッドが呼ばれました");
   }
}

 { }ブロックに注目して下さい。余計な部分を省くと、

class MethodTest{
   main(){}
   sub(){}
}

こういう形です。classブロックの中に、「main( ){ }」と「sub( ){ }」が並んでいます。mainメソッドとsubメソッドを定義しているというのが分かりますでしょうか?これに処理内容を入れると、

class MethodTest{
   main(){System.out.println("mainメソッドが呼ばれました");}
   sub(){System.out.println("subメソッドが呼ばれました");}
}

こうなります。

 ただし、メソッドを定義する際は処理内容だけでは不十分です。そのメソッドの使い方やルールについても書いておかないといけません。書く場所はメソッド名の前と( )の中です。

 mainメソッドの形はもう覚えていると思いますが、メソッド名(main)の前に「public static void」、後ろの( )の中に「String[] args」を入れます。

 mainメソッドに関しては決まりきった形で書く必要がありますが、自分で作るメソッドは自由にその使い方やルールも決めることができます。が、ここではとりあえずsubメソッドは、publicでstaticでvoidなメソッドですよ。と定義して下さい。 その意味については次回以降に。

 それらを全部書き入れると、

class MethodTest{
   public static void main(String[] args){
      System.out.println("mainメソッドが呼ばれました");
   }
   public static void sub(){
      System.out.println("subメソッドが呼ばれました");
   }
}

さっきの形になります。横に長くなるとはみ出るから改行しただけで、改行しなくても同じです(けど、改行するのが普通です)。

 ではこのmainメソッドとsubメソッドを定義したMethodTestクラスを実行してみましょう。

methodtest1

 呼ばれたのはmainメソッドだけです。せっかく定義したのにsubメソッドにはお呼びはかかりませんでした。先ほど言ったようにmainメソッドはそのclassを実行したときに自動的に呼ばれるからです。subメソッドを定義しても勝手には呼んでもらえません。

メソッドを呼ぶ

 mainメソッドは勝手に呼ばれますが、mainメソッド以外のメソッドは自分で呼ばないとダメです。では呼んであげましょう。

class MethodTest{
   public static void main(String[] args){
      System.out.println("mainメソッドが呼ばれました");
      sub();
   }
   public static void sub(){
      System.out.println("subメソッドが呼ばれました");
   }
}

こうです。呼ぶ時は処理内容を定義するための{ }は要りませんし、使い方を定義する為のpublicもstaticもvoidも要りません。

 これがメソッドを呼ぶのか定義するのかの違いです。

 そして大事なのは呼ぶ場所です。mainメソッドのブロック内で呼んでますよね?mainメソッドのブロック内というのはmainメソッドの処理内容を書くところです。つまり、mainメソッドが実行されると、subメソッドも呼ばれる(実行される)ように書いてあるわけです。

 これでこのクラスを実行すると、

methodtest2

 ちゃんとsubメソッドも呼ばれているのが確認できます。

 メソッドは一度定義しておけば何度でも使えるので、こんなこともできます。

class MethodTest{
   public static void main(String[] args){
      System.out.println("mainメソッドが呼ばれました");
      sub();
      sub();
      sub();
      sub();
      sub();
   }
   public static void sub(){
      System.out.println("subメソッドが呼ばれました");
   }
}

 

 「sub();」を5回繰り返すなら、こんな風にも書けますね。for文のおさらいです。

class MethodTest{
   public static void main(String[] args){
      System.out.println("mainメソッドが呼ばれました");
      for(int i=0; i<5; i++){
         sub();
      }
   }
   public static void sub(){
      System.out.println("subメソッドが呼ばれました");
   }
}

 

実行結果はどちらもこうなります。↓

methodtest3
 

 今回はsubメソッドというのを自分で定義して、自分で呼び出してみました。

 メソッドを定義する、そしてそれを呼ぶ(実行する)という仕組みが何となく分かりましたでしょうか?細かい部分は書いているうちにだんだんと分かってくると思うので、まず定義と呼び出しという大まかな仕組みを理解しましょう。

 次は「引数」というのを使ってメソッドを作ります。

登録無料、質問し放題↓

sponsored link

Androidアプリを作ろう

コメント

  • class Super {
    int num = 10;
    static int snum = 20;

    void method() {
    System.out.println(“Super:metod”);
    }
    {

    class Sub exteds Super {
    int num = 20;
    static int snum = 40;
    void method() {
    System.out.println(“Sub:metod”);
    }
    static void smethod() {
    System.out.println(“Sub:smethod”);
    }
    }

    class Sample {
    public static void main (String[] args) {
    Super b = new Sub();
    System.out.println(b.num);
    System.out.println(b.snum);
    b.method();
    b.smethod();
    }
    }

    by void €2014/06/23 23:35

  • class MyTest
    {
    {
    System.out.println(“initalizer”);
    }
    static {
    System.out.println(“static initalizer”);
    }
    MyTest() {
    System.out.println(“constructor”);
    }
    public static void main(string[] args){
    MyTest() mt = new MyTest();
    }
    }

    by void €2014/06/23 23:45

  •  基本情報取得を目指している者です。分かりやすくて大変参考になります。勉強させていただきます。

    by ryotaro suzuki €2015/08/06 22:55

  • メソッドの理解が曖昧だったので、とても勉強になりました。とてもわかりやすかったので、これからも参考にさせていただきます。

    by seigo €2016/05/03 01:50

  • メソッドを呼び出すとなんのメリットがあるのですか?
    ど素人ですみません

    by ど素人です €2016/05/19 18:55

  • ど素人です>
    メソッドを呼び出す利点
    ・メソッドは何回でも呼び出せます
    ・classの中身を分かりやすくします。
    ・場合によっては処理が速くなります。

    mainメソッドで処理を行うので、メソッドを呼び出す形式にすればmainメソッドがごちゃごちゃにならないので分かりやすいです。
    また、メソッドを使えば、同じような処理を行う時に何度も書かないで済むので、mainメソッドがごちゃごちゃになりにくいです。

    mainメソッドが分かりやすいことでどんな処理をしているかもわかりやすくなります。

    重複処理も、メソッド内なら見つけやすいので処理速度を上げることにつながります。

    by 初心者です €2017/03/15 19:39

down

コメントする



一番かんたんなJava入門

Androidアプリの作り方

忘備録

私の作ったAndroidアプリ

おすすめ入門書

おすすめプログラミングスクール

無料で試せる今がチャンス!

管理人

Nobuo_CREATE

Nobuo_CREATE

WordPressテーマPrinciple、マテリアルを作ったり、Androidアプリを作ったり、Java入門サイトを作ったり、本を書いたりしています。どうぞよろしく。 [詳細]



sponsored link

オススメ書籍

[オススメpoint]

 この本は全く何も分からない初心者の方にお勧めです。プログラミングをするには覚えなければならない事が無茶苦茶いっぱいありますが、この本は教えてくれる順番、その構成が素晴らしいです。RPGのゲームを作るというストーリーにのっとってちょっとずつ難しいことを教えてもらえます。
 無機質で膨大なデータが載っているような本は読む気にならないという方は、こういうストーリー仕立ての本でチャレンジしてみてはいかがでしょうか?(注:RPGを作る為の本ではありません。)

[オススメpoint]

 ある程度、Javaを読み書きできるようになったら、オブジェクト指向について学ぶべきです。本書は、抽象的で分かったような分からんようなオブジェクト指向について、非常に分かりやすい例を出して説明してくれています。オブジェクト指向とは何なのか?という本質を掴むのにこれほど適した本はないと思います。オブジェクト志向の理念を理解できれば、より効率のいいコードをより楽に書けるようになるはずです。Java上級者を目指すなら必読の一冊!

只今、急拡大中

JavaからのRuby on Rails入門

JavaからのRuby on Rails入門

COBOLからのJAVA習得

子供向けプログラミング教室

かいりつキッズプログラミング教室