가변인자 (variable arguments)

rivermt·2023년 3월 27일
0

JAVA

목록 보기
1/9

가변인자란?

자바 가변인자는 자바 5부터 도입된 기능으로, 기존에는 매개변수 개수가 고정적이었으나 동적으로 지정해 줄 수 있는 기능이다.

가변인자는 메서드의 매개변수 선언에서 마지막 위치에 "타입... 변수명" 형태로 사용된다. 이때, 변수명은 개수가 가변적인 매개변수들을 배열로 받아줄 변수명으로 사용한다.

가변인자를 사용하는 메서드를 호출할 때, 개수가 가변적인 인자들을 쉼표로 구분하여 전달할 수 있다. 이때 전달된 인자들은 자동으로 배열로 묶어서 가변인자로 선언된 변수에 할당된다.

다음과 같은 메서드가 있다고 가정해보자.

public static void printNumbers(int... numbers) {
	for(int num : numbers) {
    	System.out.print(num + " ");
    }
    System.out.println();
}

이 메서드는 정수들의 개수를 가변적으로 입력 받아 모두 출력하는 기능을 한다. 아래와 같이 메서드를 호출할 수 있다.
printNumbers(1);
printNumbers(1, 2, 3);
printNumbers(1, 2, 3, 4, 5);

출력 결과는 다음과 같다.

가변인자를 사용하면 입력 인자의 개수가 다양한 메서드를 쉽게 작성할 수 있게된다.

특징

  • 가변인자는 매개변수 선언에서 마지막에 위치해야 한다.
    가변인자 이후에 다른 매개변수가 추가되면 컴파일러는 어떤 매개변수가 가변인자인지 판단하기 어려워지기 때문이다. 마지막에 위치되어 있지 않을 경우 컴파일 오류가 발생한다.

  • 가변인자는 배열로 처리된다.
    가변인자가 선언된 메서드를 호출할 때마다 배열이 새로 생성된다. 매개변수 타입을 배열로 하면 반드시 인자를 지정해줘야 하지만 가변인자를 사용할 경우 인자를 생략할 수 있다.

  • 가능하면 가변인자를 사용한 메서드는 오버로딩하지 않는 것이 좋다.
    가변인자를 선언한 메서드를 오버로딩 하면 컴파일러가 구별하지 못하는 경우가 발생할 수 있다.
profile
화이팅!!

0개의 댓글