一番かんたんなJava入門

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

【Java】 メソッドの引数について

time 2013/03/12

 メソッドを呼び出す時に、後ろについてる( )の中に入れる値のことを引数(ひきすう)と言います。既にこの入門講座でも散々使ってますね。文字を画面に出力する時です。

System.out.print(“おはようございます”);

 printメソッドは引数に渡された文字列を画面に出力してくれるメソッドです。
 今回は、このような引数を受け取って処理するメソッドを作っていきます。

sponsored link

引数を受け取るメソッドを定義する

 for文って何?の時に2のn乗を計算するクラスを作りました。今回は2のn乗を計算するメソッドを作ります。

 その前に、例はシンプルな方がいいので、まずは2のn乗ではなく、単純に引数nを2倍した値を出力してくれるメソッドを作ってみます。メソッド名は二倍を意味する「twice」にします。クラス名は計算を意味するcalculateを縮めて「Calcu」にしましょう。

Calcu.java

public class Calcu{
     public static void main(String[] args){
     
     }

     public static void twice(){

     }
}

 twiceメソッドを定義しています。この枠組みをまずはしっかり理解しましょう。mainメソッドの定義とtwiceメソッドの定義が並んでいる状態です。

 両方ともまだ処理内容の定義が空っぽですが、これを埋めていきます。twiceメソッドは、引数に渡された値を2倍して出力するように定義します。

Calcu.java

public class Calcu{
     public static void main(String[] args){
     
     }

     public static void twice(int n){
         
     }
}

 メソッドを定義する時に、後ろの( )の中で変数を宣言することによって、その型の変数を引数として受け取れるメソッドになります(厳密には、引数を受け取らなければならないメソッドになります)。

 これでtwiceメソッドは引数にint型の変数を受け取れるようになりました。( )の中で宣言したnは仮引数(かりひきすう)と言って、受け取ったint型変数を仮にnとしてメソッドの中身を定義していく為に使います(別に変数名はnじゃなくても何でもいいです)。

 では、仮に渡された引数をnとしてそれをどう処理するか定義します。ここでは「○○の2倍は、○○」という風に文字列を出力させましょう。

Calcu.java

public class Calcu{
     public static void main(String[] args){
     
     }

     public static void twice(int n){
          System.out.print(n + "の2倍は、");
          System.out.println(n * 2);
     }
}

 これでtwiceメソッドの定義はOKです。もしnが5なら、処理内容が、

System.out.print("5の2倍は、");
System.out.println(10);

 になるのが分かると思います。

引数を渡して呼ぶ

 では実際にこのメソッドを使ってみましょう。mainメソッドの中でtwiceメソッドを呼びます。

Calcu.java

public class Calcu{
     public static void main(String[] args){
          twice(5);
     }

     public static void twice(int n){
          System.out.print(n + "の2倍は、");
          System.out.println(n * 2);
     }
}

 これを実行すると以下のように出力されます。

calcu1

 このようにメソッドを呼ぶ際に、後ろの( )の中に引数を入れて実行することを「メソッドに引数を渡す」などと表現します。

 他の値も渡してみましょう。

Calcu.java

public class Calcu{
     public static void main(String[] args){
          twice(5);
          twice(65);
          twice(3247);
     }

     public static void twice(int n){
          System.out.print(n + "の2倍は、");
          System.out.println(n * 2);
     }
}

 
 これで実行すると以下のように出力されます。

calcu2

  1.  メソッドを定義する時に、( )の中で変数(仮引数)を宣言することで、そのメソッドは引数を受け取ることができるメソッドになる(厳密には受け取らなければならなくなる)
  2.  メソッドの処理内容を定義する際に、仮引数を使って、受け取った引数をどう処理するかを定義する。
  3.  メソッドを使う時には、後ろの( )の中に引数を入れて呼ぶ(引数を渡す)。

 という仕組みを理解しましょう。

 処理内容を定義する時に使う変数を「仮引数」というのに対して、メソッドを呼ぶ時に実際に渡す引数のことを「実引数」と言ったりします。

2のn乗を計算するメソッド

 では、次は2のn乗を計算するメソッドを作りましょう。名前はpowerOfTwoメソッドにします。まずはtwiceメソッドと同じように引数にint型変数を受け取れるように仮引数を宣言します。

Calcu.java

public class Calcu{
     public static void main(String[] args){
          twice(5);
          twice(65);
          twice(3247);
     }

     public static void twice(int n){
          System.out.print(n + "の2倍は、");
          System.out.println(n * 2);
     }

     public static void powerOfTwo(int n){

     }
}

 仮引数の名前が同じ「n」で大丈夫?混乱しないのかな?と思った方、大丈夫です。twiceメソッドの仮引数nのスコープ(変数の有効範囲)は、twiceメソッドの定義部分{ }の中だけなので、それ以外の場所で同じ変数名を使っても完全に別物として扱うことができます。もちろん違う名前にしてもいいです。

 では、仮引数nを使ってpowerOfTwoメソッドの中身を定義します。

Calcu.java

public class Calcu{
     
           /*省略*/

     public static void powerOfTwo(int n){
          int answer = 1;//-------------------①

          for( int i=0; i<n; i++ ){ 
               answer = answer * 2; //--------②
          } 

          System.out.print("2の" + n + "乗は、");
          System.out.println(answer);//-------③
     }
}

 powerOfTwoメソッドの定義部分は、for文って何?で作った2のnを計算するクラスとほとんど同じです。メソッドの中で
①、変数answerを宣言して1を代入し、
②、for文を使ってanswerに2をn回かけて、
③、answerを出力しています。

 この流れがよく分からない人は、もう一度、for文って何?を読んでみてください。

 では、このpowerOfTwoメソッドをmainメソッドの中で引数を渡して呼び出します。せっかくなんで引数を変えて2回ほど呼びましょう。

Calcu.java

public class Calcu{
     public static void main(String[] args){
          twice(5);
          twice(65);
          twice(3247);
          powerOfTwo(3);
          powerOfTwo(10);
     }

     public static void twice(int n){
          System.out.print(n + "の2倍は、");
          System.out.println(n * 2);
     }

     public static void powerOfTwo(int n){
          int answer = 1;

          for( int i=0; i<n; i++ ){ 
               answer = answer * 2;
          } 

          System.out.print("2の" + n + "乗は、");
          System.out.println(answer);
     }
}

 これで実行すると、

calcu3

こうなります。

処理をまとめて再利用する

 for文って何?で作った2のn乗を出力するPowerOfTwoクラスと、今回のCalcuクラスは、書いているコード自体は非常によく似ていますよね。PowerOfTwoクラスはこんなやつでした。↓

PowerOfTwo.java

public class PowerOfTwo{
     public static void main(String[] args){
          int n = 5;
          int answer = 1;

          for( int i=0; i<n; i++ ){ 
               answer = answer * 2; 
          } 

          System.out.print("2の" + n + "乗は、");
          System.out.println(answer);
     }
}

 PowerOfTwoクラスは、mainメソッドの中に全ての処理を書いています。一方、今回書いたCalcuクラスの方はmainメソッドの外でpowerOfTwoメソッドを定義して、それをmainメソッド内で呼び出して使っています。

 こうすることでCalcuクラスのmainメソッドの処理内容がスッキリしているのが分かると思います。

Calcuクラスのmainメソッド

public static void main(String[] args){
    twice(5);
    twice(65);
    twice(3247);
    powerOfTwo(3);
    powerOfTwo(10);
}

 Calcuクラスがどんな処理を行っているのか一目瞭然ですよね?

 twiceメソッドは、引数の2倍の値を出力するという処理
 powerOfTwoメソッドは、2の引数乗を出力するという処理

 をそれぞれ行っています。

 メソッドを定義する際に、引数を受け取ってその引数なりの処理を行うように定義しておけば、いろんな引数を渡して処理させることが可能です。

 逆に、もし上記のCalcuクラスの処理内容を、メソッドを使わずに全てmainメソッド内に書こうと思えば、重複だらけの非常に読みづらいソースコードになるのが想像できると思います。

 ある一連の処理をメソッドとして定義しておいてそれを再利用するようにすれば、コーディングの量を減らすこともできるし、修正したりするのも非常に楽になります。

 次回は、メソッドの戻り値というのを使ってみましょう。引数と戻り値が使いこなせたらメソッドの扱いは自由自在になりますよ。

分からないことはプロのエンジニアに聞いてみてください↓

sponsored link

Androidアプリを作ろう

down

コメントする



一番かんたんなJava入門

Androidアプリの作り方

忘備録

私の作ったAndroidアプリ

おすすめ入門書

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

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

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

フリーランスで稼ぎたい人へ

管理人

Nobuo_CREATE

Nobuo_CREATE

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



sponsored link

オススメ書籍

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

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

只今、急拡大中

JavaからのRuby on Rails入門

JavaからのRuby on Rails入門

大人気!COBOLからのJAVA

ブロックチェーン入門

オン ザ・ブロックチェーン