一番かんたんな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メソッドの中で、実際に引数を渡してこのメソッドを呼んでみます。

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

 こうなりますね。引数の仕組みがなんとなく掴めたでしょうか?メソッドの定義をする時に、仮引数を使って渡された引数をどう処理するかを定義して、メソッドを呼び出す時に実際に引数を渡しているんですね。定義する時に使うのを「仮引数」というのに対して、メソッドを呼ぶ時に実際に渡す引数のことを「実引数」とも言います。

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

こうなります。

メソッドの本質?

 前に作ったPowerOfTwoクラスと、このpowerOfTwoメソッドは書いている内容はよく似ていますが、どこがどう違うでしょうか?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メソッド内で呼び出しています。メソッドを定義することで、それを何度でも使うことができます。
 やろうと思えば、メソッドなんて使わずに同じ出力結果を得られるようにプログラムすることもできます。具体的にどうすればいいでしょうか?ぜひ考えるだけでも考えてみて下さい。この違いを理解できたらメソッドというものの本質がほとんど分かったようなものです。
 次回は、メソッドの戻り値というのを使ってみましょう。引数と戻り値が使いこなせたらメソッドの扱いは自由自在になりますよ。

sponsored link

Androidアプリを作ろう

down

コメントする



CAPTCHA


一番かんたんなJava入門

Androidアプリの作り方

忘備録

私の作ったAndroidアプリ

私の作ったWordPressテーマ

プロに教わるオンライン学習

管理人

Nobuo_CREATE

Nobuo_CREATE

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



sponsored link

オススメ書籍

[オススメpoint]

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

[オススメpoint]

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

只今、急拡大中

ゲームを作りたい人専門

個人フットサル予約サイト

ガチ専門

JavaからのRuby on Rails入門

JavaからのRuby on Rails入門