メソッドで引数の数を事前に設定したくないときがある。
例えば、入力した数字の平均値を出すというメソッドの時、何個入力するかはそのときどきで変えたい場合があるだろう。
そんなときに使えるのが、可変長引数だ。このページではJavaメソッドの可変長引数の使い方についてお伝えする。とはいえ、使い方は簡単だ。
目次 [hide]
Javaメソッド最後の引数は可変長引数にもなる
可変長引数とは?
Javaのメソッドの最後の引数は可変長引数として使うこともできる。
可変長引数とは、メソッドの定義側でひとつ引数を設定しておくと、実際につかうときにいくつも引数を書けるということだ。
引数の数は決まっていないが、型が同じという引数があれば、この書き方が使える。
可変長の引数は配列に入れられて、メソッドに渡される。このため、メソッド側では配列と同じ扱いで、処理を行うことができる。
可変長引数の書き方
書き方を見てみよう。
呼び出す側の書き方は簡単だ。実引数N1から実引数Nnまでが可変長引数にあたる。
メソッド名(実引数A, 実引数B, … 実引数N1, 実引数N2, … 実引数Nn);
一方、呼び出されるメソッドの引数の定義では、最後の引数の型と識別子の間に、「…」を入れて書く。こうすれば、可変長だと宣言したことになる。
書き方の基本はこれだ。
では、簡単なサンプルプログラムで確かめてみよう。
可変長の引数のサンプルプログラム
このサンプルプログラムは、クラスの生徒の体重の平均を表示する。クラス毎に人数が異なっても、メソッドの定義を変える必要はない。実引数の最後の体重を生徒の数に合わせて書けばよい。
実行結果
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] メソッド:printWeightAverageを2人の体重を引数として呼び出す
- [2] メソッド:printWeightAverageを4人の体重を引数として呼び出す
- [3] メソッド:printWeightAverageを6人の体重を引数として呼び出す
- [4] 可変長引数を持つメソッド:printWeightAverageを定義する
- [5] 変数:sumの宣言と初期化を行う
- [6] [7] 体重の合計を求める
- [8] クラスと人数を表示する
- [9] 体重の平均を表示する
メソッド側に渡される値を確認するサンプルプログラム
簡単にメソッドに渡される値が、配列だということを確認しておこう。
このサンプルプログラムではよく使う方法([ ])で、配列の要素の値を取り出し、その要素の値を表示している。
実行結果
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] メソッド:printNumbersを呼び出す
- [2] 可変長引数を持つメソッド:printNumbersを定義する
- [3] [4] 配列の要素の値をすべて表示する
まとめ
このページではJavaメソッドの可変長引数についてお伝えした。
使える場面は多いので、使い方は理解しておこう。
初歩的な質問かもしれませんが、
13行目、
System.out.println("[9] 体重:" + sum / weights.length);
ではなく
System.out.println("[9] 体重:" + + + sum / weights.length);
とするのはなぜですか?
ご愛読いただきありがとうございます。
(誤) System.out.println("[9] 体重:" + + + sum / weights.length);
(正) System.out.println("[9] 体重:" + sum / weights.length);
となります。
ご指摘いただきありがとうございました。
引き続き、ご愛読のほど、よろしくお願いいたします。