可変長引数
出力はどれか。
public class Main {
static int count(int... nums) {
return nums.length;
}
public static void main(String[] args) {
System.out.println(count() + " " + count(1, 2, 3) + " " + count(new int[] {4, 5}));
}
}
- A
0 3 2 - B
1 3 1 - C コンパイルエラーになる
- D 実行時に例外が発生する
正解と解説を見る
正解: A
- A: 何も渡さないと長さ 0、3つ渡すと 3、配列を渡すとその配列 (長さ 2) がそのまま使われます。
- B: 何も渡さないときは長さ 0 の配列です。配列を渡したときは、その配列がそのまま使われます。
- C: 可変長引数には、何も渡さなくても、配列を渡してもかまいません。
- D: 可変長引数の配列は null ではないので、length で例外にはなりません。
ポイント
- 可変長引数はメソッドの中では配列です。何も渡さないと長さ 0 の配列で、配列をそのまま渡すこともできます。
- 可変長引数は引数リストの最後に1つだけ書けます。