変数パラメータ
JDK1.5以降、複数のパラメーターを受け入れる必要があるメソッドを定義し、複数のパラメーターが同じ型である場合、それを次の形式に簡略化できます。
修饰符 返回值类型 方法名(参数类型... 形参名){ }
実際、この書き込みは次と完全に同等です。
修饰符 返回值类型 方法名(参数类型[] 形参名){ }
後者の定義は呼び出し時に配列を渡す必要があるのに対し、前者はデータを直接渡すことができるというだけです。
JDK1.5以降。簡素化が行われました。...可変引数パラメーターと呼ばれるパラメーターで使用されます。
これは配列も表しますが、可変パラメータを指定してこのメソッドを呼び出す場合、配列を作成する必要はなく (これが単純さです)、配列内の要素は実際のパラメータとして直接渡されます。実際、コンパイルされたクラス ファイルは、これらの要素は、まず配列にカプセル化されてから渡されます。これらのアクションは、.class ファイルのコンパイル時に自動的に完了します。
コードデモ:
public class ChangeArgs {
public static void main(String[] args) {
int[] arr = {
1, 4, 62, 431, 2 };
int sum = getSum(arr);
System.out.println(sum);
// 6 7 2 12 2121
// 求 这几个元素和 6 7 2 12 2121
int sum2 = getSum(6, 7, 2, 12, 2121);
System.out.println(sum2);
}
/*
* 完成数组 所有元素的求和 原始写法
public static int getSum(int[] arr){
int sum = 0;
for(int a : arr){
sum += a;
}
return sum;
}
*/
//可变参数写法
public static int getSum(int... arr) {
int sum = 0;
for (int a : arr) {
sum += a;
}
return sum;
}
}
ヒント: 同じクラス内に存在できるのは、上記の add メソッドのうち 1 つだけです。呼び出しの非決定性のため
注: メソッドを作成するときにメソッドに複数のパラメータがあり、そのパラメータに可変パラメータが含まれる場合、可変パラメータはパラメータ リストの最後に書き込む必要があります。