Back-End/Java

[ JAVA ] 가변인자

oahee 2023. 7. 23. 19:21

1. 가변인자란?

메서드에 동적으로 개수가 변하는 인자들을 전달하는 방법

메서드를 호출할 때 전달하는 인자의 개수를 유연하게 처리 가능

java5부터 추가된 기능

 

<주의>

가변인자는 매개변수 리스트의 마지막에만 위치해야함

    가변인자 뒤에 다른 매개변수를 추가하면 어디까지가 가변인자인지 확인할 수 없기 때문임

 

가변인자는 배열로 저장되며, 한 가변인자는 같은 자료형의 데이터만 받을 수 있다.

 

 

2. 예제

sum 함수를 선언해보자.

가변인자를 사용하지 못하는 경우, 아래와 같이 인자 수에 따라 함수를 오버로딩해야한다.

public class Ex10 {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c = 30;
		int d = 40;
		
		// 두 정수의 합을 구해서 반환하는 
		// 1. sum() 함수 선언
		// 2. sum() 함수 호출
		int result = sum(a,b);
		System.out.printf(result);
        
        int result1 = sum(a,b,c,d);
		System.out.printf(result);
		
 	} //main
	
	public static int sum(int a, int b) {
		return a+b;
	} //sum
	
	public static int sum(int a, int b, int c) {
		return a+b+c;
	} //sum
	
	public static int sum(int a, int b, int c, int d) {
		return a+b+c+d;
	} //sum
	
} //class

 

가변인자를 사용할 경우, 아래와 같이 간단하게 사용이 가능하다.

public class Ex10_02 {
	public static void main(String[] args) {
		int result = 0;
		
		result = sum(1,2);
		System.out.println(result);	//3
		
		result = sum(1,2,3,4);
		System.out.println(result);	//10
        
		int [] m = {100,200,300,400};
		result = sum(m);
		System.out.println(result);	//1000
	} //main
	
	public static int sum( int... n ) {		// int... n : 가변인자
		int result = 0;
		for (int i = 0; i < n.length; i++) {
			result += n[i];
		} //for
		return result;		// return 수식, 변수, 리터럴 등 가능
	}
	
} //class