Javaのメソッド – エンジニアの入り口 https://eng-entrance.com 「エンジニアの入り口」は、プログラミング入門やエンジニアリング入門の知識が満載の初心者のための勉強サイトです。プログラミングやサーバ、ネットワークの基礎知識や勉強方法を習得できます。 Mon, 17 Sep 2018 05:50:54 +0000 ja hourly 1 https://wordpress.org/?v=5.2.19 【初心者向け】Javaメソッドのオーバーロード(overload)の使い方 https://eng-entrance.com/java-method-overload https://eng-entrance.com/java-method-overload#respond Thu, 23 Feb 2017 00:32:13 +0000 http://eng-entrance.com/?p=4717 メソッドで引数を指定するとき、引数のありなしを自由にしたり、数字やテキストなどを自由に入力したいという場合がある。

こんなときに使えるのがJavaメソッドのオーバーロードだ。

このページではオーバロードの使い方をお伝えしよう。

Javaメソッドのオーバーロード

オーバーロードとは?

Javaのメソッドのオーバーロードとは、メソッドをひとつの名前でいくつも定義することだ。

例えば、hello('田中')のように名前を入力すると、「こんにちは、○○さん」と表示されるhelloメソッドを作ったとすると、hello()とするとエラーが出る。引数がないからだ。

オーバーロードを使うとこれができるようになる。ちょっと堅苦しい言葉で言えば、多重定義だ。

引数の型の違い

名前が同じでも、異なるメソッドをどうやっていくつも定義できるのか?

その鍵は、引数だ。メソッドの引数リストの型の並びが違えば名前が同じでも、Javaは異なるメソッドとしてくれる。

これを使えば、同じ名前だけど、引数が違ければ、呼び出すメソッドを変えることができる。

また、引数の型が違うパターンではなく、引数の数が違うパターンでもオーバロードは使える。色々と便利だ。

使う理由

使う人が、名前の違うメソッドをいくつも覚える必要がないというのがオーバロードの便利なところだ。どういうことか?

例えば足し算をするメソッドadd()があったとする。引数が2個や3個や4個のときそれぞれでメソッドを、add2()、add3()、add4()と名前をつけていくと、作る人はいいだろうが、使う人はいちいち覚えるのが大変だ。

しかし、add()だけだったら使う人が覚えるメソッドはひとつで済む。「足し算をするならadd()だ!」と知っておけばいい。

自動的に引数にあったメソッドが呼び出されるので、間違いも少なくなる。

引数の型が異なるメソッドのサンプルプログラム

では、簡単なサンプルプログラムでオーバロードの使い方を確かめてみよう。

このサンプルプログラムは、果物の名前や個数や重さをメソッドの引数の違いで表示する。同じメソッド名でも、オーバーロードによって名前を変える必要はない。

public class PrintFruitParameter {
    public static void main (String[] args) {
        printData();//[1]
        printData(10);//[2]
        printData(1.2);//[3]
    }
    private static void printData() {//[4]
        System.out.println("[5] 名前:りんご");
    }
    private static void printData(int quantity) {//[6]
        System.out.println("[7] 数量:" + quantity + "個");
    }
    private static void printData(double weight) {//[8]
        System.out.println("[9] 重さ:" + weight + "Kg");
    }
}

実行結果

[5] 名前:りんご
[7] 数量:10個
[9] 重さ:1.2Kg

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] メソッド:printDataを引数なしで呼び出す。
  • [2] メソッド:printDataをint型実引数で呼び出す。
  • [3] メソッド:printDataをdouble型実引数で呼び出す。
  • [4] 引数なしのメソッドの定義をする。
  • [5] 「名前:りんご」を表示する。
  • [6] int型の引数を持つメソッドの定義をする。
  • [7] 「数量:xx 個」を表示する。
  • [8] double型の引数を持つメソッドの定義をする。
  • [9] 「重さ:xx Kg」を表示する。

引数の並びが異なるメソッドのサンプルプログラム

このサンプルプログラムはメソッドの引数の型が同じだが、引数の型の並びが違う。この並びの違いをJavaは分かってくれる。引数の数は同じでも、型によってメソッドの処理を変えたいときは、このオーバーロードの仕組みを使うとよい。

public class PrintFruitParameters {
    public static void main (String[] args) {
        printData(10, 1.2);//[1]
        printData(1.2, 10);//[2]
    }
    private static void printData(int quantity, double weight) {//[3]
        System.out.print("[4] 数量:" + quantity + "個 ");
        System.out.println("[5] 重さ:" + weight + "Kg");
    }
    private static void printData(double weight, int quantity) {//[6]
        System.out.print("[7] 重さ:" + weight + "Kg ");
        System.out.println("[8] 数量:" + quantity + "個");
    }
}

実行結果

[4] 数量:10個 [5] 重さ:1.2Kg
[7] 重さ:1.2Kg [8] 数量:10個

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] メソッド:printDataをint型、double型の実引数で呼び出す。
  • [2] メソッド:printDataをdouble型、int型の実引数で呼び出す。
  • [3] int型、double型の引数の並びを持つメソッドを定義する。
  • [4] 「数量:xx 個」を表示する。
  • [5] 「重さ:xx Kg」を表示する。
  • [6] double型、int型の引数の並びを持つメソッドを定義する。
  • [7] 「重さ:xx Kg」を表示する。
  • [8] 「数量:xx 個」を表示する。

まとめ

このページではJavaメソッドのオーバーロードについて使い方をお伝えした。

同じ名前で複数のメソッドが作れるというのを知っておくと、必ず役に立つときがくる。覚えておこう。

]]>
https://eng-entrance.com/java-method-overload/feed 0
Javaメソッドの可変長引数 (最後の引数)の使い方 https://eng-entrance.com/java-method-variadic https://eng-entrance.com/java-method-variadic#comments Wed, 22 Feb 2017 00:24:01 +0000 http://eng-entrance.com/?p=4705 メソッドで引数の数を事前に設定したくないときがある。

例えば、入力した数字の平均値を出すというメソッドの時、何個入力するかはそのときどきで変えたい場合があるだろう。

そんなときに使えるのが、可変長引数だ。このページではJavaメソッドの可変長引数の使い方についてお伝えする。とはいえ、使い方は簡単だ。

Javaメソッド最後の引数は可変長引数にもなる

可変長引数とは?

Javaのメソッドの最後の引数は可変長引数として使うこともできる。

可変長引数とは、メソッドの定義側でひとつ引数を設定しておくと、実際につかうときにいくつも引数を書けるということだ。

引数の数は決まっていないが、型が同じという引数があれば、この書き方が使える。

可変長の引数は配列に入れられて、メソッドに渡される。このため、メソッド側では配列と同じ扱いで、処理を行うことができる。

可変長引数の書き方

書き方を見てみよう。

呼び出す側の書き方は簡単だ。実引数N1から実引数Nnまでが可変長引数にあたる。

メソッド名(実引数A, 実引数B, … 実引数N1, 実引数N2, … 実引数Nn);

一方、呼び出されるメソッドの引数の定義では、最後の引数の型と識別子の間に、「…」を入れて書く。こうすれば、可変長だと宣言したことになる。

書き方の基本はこれだ。

修飾子 戻り値の型 メソッド名(型 識別子A, 型 識別子B, … , 型 … 識別子N) {
   命令文;
   ・・・
   return 式;
}

では、簡単なサンプルプログラムで確かめてみよう。

可変長の引数のサンプルプログラム

このサンプルプログラムは、クラスの生徒の体重の平均を表示する。クラス毎に人数が異なっても、メソッドの定義を変える必要はない。実引数の最後の体重を生徒の数に合わせて書けばよい。

public class MethodWithLastFomalParameter {
    public static void main (String[] args) {
        printWeightAverage("クラスA", 35.6, 54.7);//[1]
        printWeightAverage("クラスB", 44.2, 35.6, 60.8, 54.7);//[2]
        printWeightAverage("クラスC", 44.2, 35.6, 60.8, 54.7, 99.9, 32.4);//[3]
    }
    private static void printWeightAverage(String className, double ... weights) {//[4]
        double sum = 0;//[5]
        for(double weight: weights) {//[6]
            sum += weight;//[7]
        }
        System.out.println("[8] " + className + ":(人数:" + weights.length + ")");
        System.out.println("[9] 体重:" + sum / weights.length);
    }
}

実行結果

[8] クラスA:(人数:2)
[9] 体重:45.150000000000006
[8] クラスB:(人数:4)
[9] 体重:48.825
[8] クラスC:(人数:6)
[9] 体重:54.6

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] メソッド:printWeightAverageを2人の体重を引数として呼び出す
  • [2] メソッド:printWeightAverageを4人の体重を引数として呼び出す
  • [3] メソッド:printWeightAverageを6人の体重を引数として呼び出す
  • [4] 可変長引数を持つメソッド:printWeightAverageを定義する
  • [5] 変数:sumの宣言と初期化を行う
  • [6] [7] 体重の合計を求める
  • [8] クラスと人数を表示する
  • [9] 体重の平均を表示する

メソッド側に渡される値を確認するサンプルプログラム

簡単にメソッドに渡される値が、配列だということを確認しておこう。

このサンプルプログラムではよく使う方法([ ])で、配列の要素の値を取り出し、その要素の値を表示している。

public class DumpLastFomalParameter {
    public static void main (String[] args) {
        printNumbers(101, 102, 103, 104, 105, 106);//[1]
    }
    private static void printNumbers(int ... numbers) {//[2]
        for (int index = 0; index < numbers.length; index ++) {//[3]
            System.out.println("[4] number[" + index + "] : " + numbers[index]);
        }
    }
}

実行結果

[4] number[0] : 101
[4] number[1] : 102
[4] number[2] : 103
[4] number[3] : 104
[4] number[4] : 105
[4] number[5] : 106

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] メソッド:printNumbersを呼び出す
  • [2] 可変長引数を持つメソッド:printNumbersを定義する
  • [3] [4] 配列の要素の値をすべて表示する

まとめ

このページではJavaメソッドの可変長引数についてお伝えした。

使える場面は多いので、使い方は理解しておこう。

]]>
https://eng-entrance.com/java-method-variadic/feed 2
【初心者向け】Javaメソッドのreturnの使い方 https://eng-entrance.com/java-method-return https://eng-entrance.com/java-method-return#respond Tue, 21 Feb 2017 00:28:44 +0000 http://eng-entrance.com/?p=4696 Javaに限らずメソッドを利用するとき、何かの値を入力して何かの値を出力したいというときは多い。

値の入力には引数を使うが、出力にはreturnを使う。また、returnは処理の中断にも使える。

このページではJavaメソッドのreturn文の使い方についてお伝えしよう。

メソッドのreturn文の使い方

return文は関数から値を返すことに使われるのが印象として多いだろう。

それだけではなく、Javaのメソッドの処理を中断することができる。条件文と合わせて使うと指定した場所で処理の制御を行うことができたりする。もともとの意味合いは、呼び出したメソッドから元のメソッドに「戻る」という意味合いだ。

例えば、1個あたりの果物の値段を計算するメソッドで引数として指定された果物の数が0以下であれば、その数に問題があることは明らかだ。このような場合、returnによって計算処理を中断して戻ることができる。

では、サンプルプログラムで確かめてみよう。

メソッドのif文からreturn命令文で戻るサンプルプログラム

このプログラムは、引数として渡された果物の値段と個数から果物1個あたりの値段の計算を行うプログラムだ。

ただし、個数が0以下のときはメッセージを出して、計算処理を中断する。個数が0以下の場合と1以上の場合のプログラムの動きを、実行結果から確かめてほしい。

public class ReturnFromIfStatement {
    public static void main(String[] args) {
        calculatePrice(3,100);//[1]
        System.out.println("[2] 計算の終わり");
        calculatePrice(-1,200);//[3]
        System.out.println("[4] 計算の終わり");
    }
    private static void calculatePrice(int number,int price) {//[5]
        if(number < 0){//[6]
            System.out.println("[7] 個数の値:"  + number + "がマイナスです。");
            return;//[8]
        }
        System.out.println("[9] 果物1つの値段 :" + price/number);//
    }
}

実行結果

[9] 果物1つの値段 :33
[2] 計算の終わり
[7] 個数の値:-1がマイナスです。
[4] 計算の終わり

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] メソッド:calculatePriceを個数:3、値段:100円の引数で呼び出す。
  • [2] 「計算の終わり」を表示する。
  • [3] メソッド:calculatePriceを個数:-1、値段:200円の引数で呼び出す。
  • [4] 「計算の終わり」を表示する。
  • [5] メソッド:calculatePriceの定義をする。
  • [6] もしnumberがマイナスならば
  • [7] 「個数の値がマイナスです。」を表示する。
  • [8] 計算処理を中断して戻る。
  • [9] 果物1つの値段:price/numberを表示する。

メソッドのループからreturnで戻るサンプルプログラム

次のサンプルプログラムは、どこでもメソッドがreturn命令文に出会うとそのメソッドから戻ることを示している。

メソッドの中のreturn命令文は、深いところにある。ループの中の、さらにswitch文の中にある。どこからでも戻れるのだ。

public class ReturnFromForLoop {
    public static void main(String[] args) {
        forLoop();//[1]
    }
    private static void forLoop(){//[2]
        for(int number = 1;number <= 10;number++){//[3]
            System.out.println("[4] number:" + number);
            switch(number) {//[5]
                case 1://[6]
                case 2://[7]
                    continue;//[8]
                case 3://[9]
                    return;//[10]
                default://[11]
                    break;//[12]
            }
        }
    }
}

実行結果

[4] number:1
[4] number:2
[4] number:3

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] 値を戻すメソッド:forLoopを呼び出す。
  • [2] メソッド:forLoopの定義をする。
  • [3] 変数numberをループの中で1から10までカウントアップする。
  • [4] 変数numberを表示する。
  • [5] [6] [7] [8] numberが1又は2のとき、continueする。
  • [9] [10] numberが3のとき、returnする。
  • [11] [12] それ以外のとき、breakする。

まとめ

このページではJavaメソッドのreturnの使い方についてお伝えをしてきた。次のふたつの使い方がある。

  • メソッドを通した後の値を返す
  • 処理を中断して元の処理に戻る

いずれも必ず使うので、使い方を理解しておこう。

]]>
https://eng-entrance.com/java-method-return/feed 0
1分理解!Javaのメソッド(関数)定義の仕方 https://eng-entrance.com/java-method-declare https://eng-entrance.com/java-method-declare#comments Mon, 20 Feb 2017 07:10:29 +0000 http://eng-entrance.com/?p=4672 Javaにはもちろん既存で使えるメソッド(関数)もあるが、作る場合にはまず宣言をする必要がある。

このページではJavaでの関数の宣言についてご紹介しよう。

Javaメソッドの定義の仕方

メソッドの定義とは、要するに道具を作ることだ。定義に従えば何度でもその道具(メソッド)を呼び出すことができる。

書き方は次のようになる。

修飾子 戻り値の型 メソッド名(引数1, 引数2, 引数3, …引数n) {
  命令文;
  ・・・
  return 式;
}

例えば、次のようになる。

private static double  calculateBmi(double height,double weight){//[6]
    double bmi = weight / ((height / 100.0) * (height / 100.0));//[7]
    return bmi;//[8]
}

それでは定義で使われている言葉の説明をしていこう。

メソッド名

メソッドに付けられた名前である。メソッドを呼び出すときは、この名前を用いてメソッドの呼び出しを行う。

引数

引数は、関数に入力する値だと思うとわかりやすいだろう。

数字を入れると「+2されて返ってくる」道具(メソッド)addがあるとすると、add(1)とすれば3と返ってくる。

引数が二つ以上ある場合は、カンマで区切られる。引数がないメソッドももちろんOKだ。

戻り値の型

メソッドの戻す値の型を宣言する。もし、メソッドに戻す値がない場合は、キーワード:voidを使う。

修飾子

修飾子:public protected private abstract static finalなどの中から選んで宣言する。この項目は、省略可能である。また詳しく別の場所で説明する。

return 式

制御をメソッドの呼び出し元に戻す。プログラムを実行中にreturn命令に出会ったら処理を中断して、呼び出されたところに戻る。このとき、returnするものを指定しておくと値を返してくれる。多くの場合は、何らかの値を返すだろう。

引数と戻り値があるメソッドのサンプルプログラム

それでは実際にサンプルプログラムで、メソッドの定義を確認してみよう。

このプログラムは、健康の指標となるBMI値を計算するプログラムだ。体重計には、身長を入力しておくと、このBMI値を表示してくれるものがあるので、計ったことがあるかもしれない。プログラムを見ると、BMI値を求めるためのメソッド:calculateBmiが定義されている。メソッドの引数に身長と体重を渡すと、戻り値に計算されたBMI値が戻される。

public class BmiCalculationWithMethod {//[1]
    public static void main (String[] args) {
        double height = 180.0;//[2]
        double weight = 73.0;//[3]

        double bmi = calculateBmi(height,weight);//[4]
        System.out.println("BMI値 : " + bmi );//[5]
    }
    private static double  calculateBmi(double height,double weight){//[6]
        double bmi = weight / ((height / 100.0) * (height / 100.0));//[7]
        return bmi;//[8]
    }
}

実行結果

BMI値 : 22.530864197530864

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] クラス名:メソッドを使ったBMI値の計算
  • [2] 変数heightを宣言して、0を代入する。
  • [3] 変数weightを宣言して、0を代入する。
  • [4] メソッドcalculateBmiを呼び出す。
  • [5] bmi値を表示する。
  • [6] メソッドcalculateBmiの定義をする。
  • [7] bmiにBMI値の計算:体重÷(身長 X 身長)の結果を代入する。
  • [8] bmi値を戻す。

なぜメソッドを定義するのか

プログラムは、メソッドを使わなくても書くことができる。ただ、ほとんど必ずプログラムにはメソッドが使われる。

なぜメソッドを使うのかというと、プログラムを分かりやすくし、他のプログラム、他のプログラマーが使えるようにするためだ。例えば、次のプログラムを見てほしい。main()の中のコードだけを見て、このプログラムは何をしているかすぐ分かるだろうか。

public class BmiCalculationWithoutMethod {
    public static void main (String[] args) {
        double h = 180.0;
        double w = 73.0;

        double b = w / ((h / 100.0) * (h / 100.0));
        System.out.println("値:" + b);
    }
}

おそらく、ほとんどの人にはこのコードが何をしているのか分からないだろう。それで、操作の内容がよく分かる名前を付けたメソッドを定義して、必要なコードだけをまとめておく。そうすれば、だれでも使いやすい。

引数も戻り値もないメソッドのサンプルプログラム

メソッドに、いつでも引数や戻り値を定義する必要はない。必要ないときは、書かなくてよいのだ。

このプログラムでは、「Hello World!」を表示するメソッドを定義して、そのプログラムを呼び出している。このメソッド定義には、引数も、戻り値もない。非常にシンプルなメソッドだ。

  • 引数がない → printHelloWorld( )の( )中に何も定義されていない。
  • 戻り値がない → returnがない。

public class SimpleMethod {//[1]
    public static void main (String[] args) {
        printHelloWorld();//[2]
    }
    private static void printHelloWorld() {//[3]
        System.out.println("Hello World");//[4]
    }
}

実行結果

Hello World

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] クラス名SimpleMethod
  • [2] メソッドprintHelloWorldを呼び出す
  • [3] メソッドprintHelloWorldを定義する
  • [4] Hello Worldを表示する

まとめ

このページではJavaメソッドの定義方法についてお伝えした。

はじめはよくわからない部分が多いと思うが、だんだん慣れて行くはずだ。とりあえず簡単なものから作成して動かしてみていただきたい。

]]>
https://eng-entrance.com/java-method-declare/feed 1
【初心者向け!】Javaのメソッド(関数)の使い方 https://eng-entrance.com/java-method-basic https://eng-entrance.com/java-method-basic#respond Sun, 19 Feb 2017 02:25:11 +0000 http://eng-entrance.com/?p=4668 プログラミングにおけるメソッド(関数)とは、同じ処理を何度も実施したいときに、道具(メソッド)を作っておいて、繰り返し使うイメージだ。

Javaでももちろん同じだが、Javaを書くときには必ずmainメソッドが必要なので、言葉は聞いたことがある人がほとんどのはずだ。

このページではJavaのメソッドの使い方についてお伝えする。参考にしていただければと思う。

Javaのメソッド(関数)の使い方

Javaのメソッドは、命令文が集まった操作を実行するためのものだ。

メソッドとは?

繰り返し使えるプログラミングで作った道具だと思うとわかりやすいだろう。

例えば、ふたつの値の平均値を求めるメソッドが定義されていたとする。もし、平均値を求めることが必要になったら、そのメソッドを使うだけですぐに平均値を求めることができる。

そういうツールを作っておくイメージだ。

なぜメソッドというものがあるのか?

理由は簡単で、「便利だから」の一言に尽きるだろう。

例えば、「ある数字に3をかけて、5で割って、4を足して、2を引く」という動作をする必要があるとしよう。

これを変数a,b,c,…,zのいずれでも実施しないといけない。

まず想像が付くのがひとつ書いてコピーしていく方法だ。確かにこれでも上手くいく。

a = (((a * 3) /5) +4) - 2;
b = (((a * 3) /5) +4) - 2;
c = (((a * 3) /5) +4) - 2;
d = (((a * 3) /5) +4) - 2;
・
・
・

しかし、これが、「ある数字に3をかけて、5で割って、4を足して、3を引く」に変わって途端どうだろうか?

すべてを書き換えるのは非常に面倒なはずだ。

だからこそ、メソッド(道具)を用意しておいて、その道具自体を書き換えればいいようにする訳だ。

なぜメソッドというものがあるのか?

また、複雑な処理をいくつかのメソッドを組み合わせて行うということもできる。

こうすれば、大きなプログラムを何人かで分けてプログラミングすることも簡単だ。さらに、コードも分かりすくもなる。

メソッドの書き方

早速、書き方を見てみよう。書き方の基本は簡単だ。

メソッド名(引数1, 引数2, 引数3, …, 引数n);

引数に関しては次のページ以降で解説していくが、基本的な使い方を見ていこう。

メソッドを使ったサンプルプログラム

メソッドの呼び出し方をサンプルプログラムで見てみよう。

このプログラムでは、ふたつの数値、aとbの最大、最小、平均をひとつにまとめて表示するメソッドを定義して、そのメソッドを呼び出している。

ちなみにこれまでも出てきているが、mainメソッドは一番初めに実行されるメソッドだ。ここから様々なメソッドが呼ばれるイメージだと思ってほしい。

public class OneMethod {
    static int a = 10;//[1]
    static int b = 20;//[2]

    public static void main (String[] args) {
        printThreeValues();//[3]
    }
    private static void printThreeValues() {//[20]
        int maximum = a;//[21]
        if (b > a) {//[22]
            maximum = b;//[23]
        }
        int minimum = a;//[24]
        if (b < a) {//[25]
            minimum = b;//[26]
        }
        int average = (a + b) / 2;//[27]
        System.out.println("[28] 最大値:" + maximum);
        System.out.println("[29] 最小値:" + minimum);
        System.out.println("[30] 平均値:" + average);
    }
}

実行結果

[27] 最大値:20
[28] 最小値:10
[29] 平均値:15

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] フィールドaを宣言して、10を代入する。
  • [2] フィールドbを宣言して、20を代入する。
  • [3] メソッドprintThreeValuesを呼び出す。
  • [20]メソッド:printThreeValuesを定義する。
  • [21] maxにaを代入する。
  • [22][23] bがaより大きければ、maximumにbを代入する。
  • [24] minimumにaを代入する。
  • [25][26] bがaより小さければ、minimumにbを代入する。
  • [27] aとbの平均値をaverageに代入する。
  • [28] 最大値maximumを表示する。
  • [29] 最小値minimumを表示する。
  • [30] 平均値averageを表示する。

メソッドを分けたサンプルプログラム

前のセクションのプログラムでは、最大、最小、平均をまとめて表示した。このプログラムでは、メソッドをデータ処理ごとに分けて定義して、表示させたい順番にメソッドを呼び出している。

public class ThreeMethods {
    static int a = 10;//[1]
    static int b = 20;//[2]

    public static void main (String[] args) {
        printMaximum();//[3]
        printMinimum();//[4]
        printAverage();//[5]
    }
    private static void printMaximum() {//[20]
        int maximum = a;//[21]
        if (b > a) {//[22]
            maximum = b;//[23]
        }
        System.out.println("[24] 最大値;" + maximum);
    }
    private static void printMinimum() {//[25]
        int minimum = a;//[26]
        if (b < a) {//[27]
            minimum = b;//[28]
        }
        System.out.println("[29] 最小値;" + minimum);
    }
    private static void printAverage() {//[30]
        int average = (a + b) / 2;//[31]
        System.out.println("[32] 平均値;" + average);
    }
}

実行結果

[24] 最大値;20
[29] 最小値;10
[32] 平均値;15

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] フィールドaを宣言して、10を代入する。
  • [2] フィールドbを宣言して、20を代入する。
  • [3] メソッドprintMaximumを呼び出す。
  • [4] メソッドprintMinimumを呼び出す。
  • [5] メソッドprintAverageを呼び出す。
  • [20] メソッドprintMaximumを定義する。
  • [21] maximumにaを代入する。
  • [22][23] bがaより大きければ、maximumにbを代入する。
  • [24] 最大値maximumを表示する。
  • [25] メソッドprintMinimumを定義する。
  • [26] minimumにaを代入する。
  • [27] [28] bがaより小さければ、minimumにbを代入する。
  • [29] 最小値minimumを表示する。
  • [30] メソッドprintAverageを定義する。
  • [31] averageに(a + b) / 2を代入する。
  • [32] 平均値averageを表示する。

メソッドをコピーしたサンプルログラム

前のセクションで、二つのメソッドの使い方を説明した。メソッドをひとつにまとまったメソッドを使う方法と、処理ごとに分けて使う方法だ。どちらがよいのだろうか。最大、最小、平均の順に値を表示するだけなら、メソッド定義を3つの分けるのは手間がかかるので、ひとつのメソッドで済ませたくなる。

では、メソッドをひとつにまとめて書くとどうなるだろうか。後で、最大値だけを別に表示しなければならなくなると、おそらく最大値のところだけ、コピーしてもうひとつのメソッドをつくることになるだろう。それが、次のコードだ。メソッド:printOneValueはメソッド:printThreeValuesのコードの最大値に関係する部分をコピーしている。

public class CopiedMethod {
    static int a = 10;//[1]
    static int b = 20;//[2]

    public static void main (String[] args) {
        printOneValue();//[3]
        printThreeValues();//[4]
    }
    private static void printOneValue() {//[5]
        int maximum = a;//[6]
        if (b > a) {//[7]
            maximum = b;//[8]
        }
        System.out.println("[10] 最大値;" + maximum);//[10]
    }
    private static void printThreeValues() {//[20]
        int maximum = a;//[21]
        if (b > a) {//[22]
            maximum = b;//[23]
        }
        int minimum = a;//[24]
        if (b < a) {//[25]
            minimum = b;//[26]
        }
        int average = (a + b) / 2;
        System.out.println("[27] 最大値:" + maximum);
        System.out.println("[28] 最小値:" + minimum);
        System.out.println("[29] 平均値:" + average);
    }
}

実行結果

[10] 最大値;20
[55] 最大値 ; 20
[60] 最小値 ; 10
[62] 平均値 ;15

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] フィールドaを宣言して、10を代入する。
  • [2] フィールドbを宣言して、20を代入する。
  • [3] メソッド:printOneValueを呼び出す。
  • [4] メソッド:printThreeValuesを呼び出す。
  • [5] メソッドprintOneValueを定義する。
  • [6]-[10] メソッド:printThreeValues の[20]-[23]をコピー
  • [20] [30]OneMethod:printThreeValuesメソッドと同じ。

メソッドを共有したサンプルログラム

将来、処理の追加や変更のことを考えるとどうだろうか。コピーされたコードのない小さな処理単位に分けたほうが、変更しやすいのは明らかだ。例えば、最大だけ表示したい。最大、最小、平均の表示の順番を変えたい。このような要求に簡単に応えられる。

さらに、コピーされたコードがなければ、修正は一箇所で済む。これが重要な点だ。もし、「最大値」という文字表示を「最大」だけの表示に修正するとなった場合、一箇所でよいのだ。

では、サンプルで見てみよう。

public class CommonMethods {
    static int a = 10;//[1]
    static int b = 20;//[2]

    public static void main (String[] args) {
        printOneValue();//[3]
        printThreeValues();//[4]
    }
    private static void printOneValue() {//[5]
        printMaximum();//[6]
    }
    private static void printThreeValues() {//[7]
        printMaximum();//[8]
        printMinimum();//[9]
        printAverage();//[10]
    }
    private static void printMaximum() {//[20]
        int maximum = a;//[21]
        if (b > a) {//[22]
            maximum = b;//[23]
        }
        System.out.println("[24] 最大値;" + maximum);
    }
    private static void printMinimum() {//[25]
        int minimum = a;//[26]
        if (b < a) {//[27]
            minimum = b;//[28]
        }
        System.out.println("[29] 最小値;" + minimum);
    }
    private static void printAverage() {//[30]
        int average = (a + b) / 2;//[31]
        System.out.println("[32] 平均値;" + average);
    }
}

実行結果

[24] 最大値;20
[24] 最大値;20
[29] 最小値;10
[32] 平均値;15

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] フィールドaを宣言して、10を代入する。
  • [2] フィールドbを宣言して、20を代入する。
  • [3] メソッド:printOneValueを呼び出す。
  • [4] メソッド:printThreeValuesを呼び出す。
  • [5] メソッドprintOneValueを定義する。
  • [6] メソッド:printMaximumを呼び出す。
  • [7] メソッド:printThreeValuesを定義する。
  • [8] メソッドprintMaximumを呼び出す。
  • [9] メソッドprintMinimumを呼び出す。
  • [10] メソッドprintAverageを呼び出す。
  • [20] [29]ThreeMethod:printThreeValuesメソッドと同じ。

まとめ

このページではJavaのメソッドの使い方をまとめてご紹介した。

メソッドはプログラミングにおける重要な文法だ。これがないとプログラミングは極めて面倒なものになる。

使い方を一通り理解しておこう。(また、より詳細は下記から順番に確認していってほしい)

]]>
https://eng-entrance.com/java-method-basic/feed 0