메서드의 매개 변수 개수가 정해져 있지 않을 때
메서드 선언 시 매개 변수의 개수를 정하지 않고, 메서드 호출 시마다 매개 변수 개수를 바꾸며 호출해야 할 때가 있다.
이때 두 가지 방법으로 매개 변수의 개수를 랜덤 하게 지정할 수 있다.
sum 메서드를 예시로 든다.
int sum1(int[] values) {
int sum = 0;
for (int val : values)
sum += val;
return sum;
}
int sum2(int... values) {}
첫 번째로는 매개 변수를 배열 타입으로 선언하는 것이다. 메서드 호출 시 배열을 넘겨줌으로써 배열 안에 담긴 데이터를 모두 전달한다. 단점이 있다면 메서드 호출 전 배열을 미리 선언해야 된다는 것이다.
int[] values = {1, 2, 3}; // 배열 선언
int result = sum1(values);
result = sum1(new int[] {1, 2, 3});
두 번째 방법으로 ...를 사용하여 배열을 넘겨주는 것이 아닌, 값의 리스트만 넘겨주는 방법이 있다.
...로 선언된 매개 변수는 배열 타입이므로 메서드 내부 동작에서는 첫 번째 방법과 별다를 게 없다.
int result = sum2(1, 2, 3);
result = sum2(1, 2, 3, 4, 5);
두 방법을 비교해본다.
public class Main {
public static void main(String[] args) {
int[] values = {21, -2, 4};
int result = sum1(values);
System.out.println("배열 사용: " + result);
result = sum2(3, 1, -1, 7);
System.out.println("... 사용: " + result);
}
static int sum1(int[] values) {
int sum = 0;
for (int val : values)
sum += val;
return sum;
}
static int sum2(int... values) {
int sum = 0;
for (int val : values)
sum += val;
return sum;
}
}

메서드의 매개 변수 개수가 정해져 있지 않을 때
메서드 선언 시 매개 변수의 개수를 정하지 않고, 메서드 호출 시마다 매개 변수 개수를 바꾸며 호출해야 할 때가 있다.
이때 두 가지 방법으로 매개 변수의 개수를 랜덤 하게 지정할 수 있다.
sum 메서드를 예시로 든다.
int sum1(int[] values) {
int sum = 0;
for (int val : values)
sum += val;
return sum;
}
int sum2(int... values) {}
첫 번째로는 매개 변수를 배열 타입으로 선언하는 것이다. 메서드 호출 시 배열을 넘겨줌으로써 배열 안에 담긴 데이터를 모두 전달한다. 단점이 있다면 메서드 호출 전 배열을 미리 선언해야 된다는 것이다.
int[] values = {1, 2, 3}; // 배열 선언
int result = sum1(values);
result = sum1(new int[] {1, 2, 3});
두 번째 방법으로 ...를 사용하여 배열을 넘겨주는 것이 아닌, 값의 리스트만 넘겨주는 방법이 있다.
...로 선언된 매개 변수는 배열 타입이므로 메서드 내부 동작에서는 첫 번째 방법과 별다를 게 없다.
int result = sum2(1, 2, 3);
result = sum2(1, 2, 3, 4, 5);
두 방법을 비교해본다.
public class Main {
public static void main(String[] args) {
int[] values = {21, -2, 4};
int result = sum1(values);
System.out.println("배열 사용: " + result);
result = sum2(3, 1, -1, 7);
System.out.println("... 사용: " + result);
}
static int sum1(int[] values) {
int sum = 0;
for (int val : values)
sum += val;
return sum;
}
static int sum2(int... values) {
int sum = 0;
for (int val : values)
sum += val;
return sum;
}
}
