JAVA/JAVA

Java | Ellipsis 가변인수

pathas 2020. 1. 29. 17:40

Ellipsis (...) 가변인수

매개변수로 들어오는 값의 개수와 상관 없이 메소드가 기능하도록 해주는 매개변수

  • (...) 매개변수로 전달되는 인자들의 자료형은 반드시 같아야 함
  • (...) 가변인수는 매개변수 가장 마지막에 작성해야 함
  • (...) 앞에 매개변수가 있는 경우,
    인자들이 앞에 있는 매개변수부터 하나씩 순서대로 전달되고
    나머지 인자들이 (...)으로 전달됨
  • 가변배열 형태의 매개변수임

Argument 인자: 매개변수로 전달된 실질적인 값


형식

(자료형 ... 매개변수명)

사용례_확장 for문 활용

package j200129;

public class VarArgTest {

    // ... 매개변수를 사용
    public void print(String... names) {
        // 가변배열의 형태로 매개변수를 받아오기 때문에 확장 for문 사용 가능
        for (String name : names) {
            System.out.print(name + ", ");
        }
         // 줄바꿈
        System.out.println();
    }

    public static void main(String[] args) {
        // 객체 생성
         VarArgTest vat = new VarArgTest();

         // 출력, 인자들의 자료형은 반드시 같아야 함
        vat.print("홍길동");
        vat.print("홍길동", "이순신");
        vat.print("홍길동", "이순신", "유성룡");
        vat.print("홍길동", "이순신", "유성룡", "강감찬");
        vat.print("홍길동", "이순신", "유성룡", "강감찬", "이도");
        /*
        인자들이 주어지면 names 배열은 다음과 같이 동작함
        String names[] = {"홍길동"}
        String names[] = {"홍길동", "이순신"}
        String names[] = {"홍길동", "이순신", "유성룡"}
        ...
        ===== 결과 =====
        홍길동, 
        홍길동, 이순신, 
        홍길동, 이순신, 유성룡, 
        홍길동, 이순신, 유성룡, 강감찬, 
        홍길동, 이순신, 유성룡, 강감찬, 이도, 
        */
    }

}

인자들을 수에 상관없이 메소드로 전달하는 (...)매개변수에 대해 알아보았습니다.

인자들의 개수에는 제한이 없지만, 자료형은 반드시 같아야한다는 점을 기억하면 좋을 것 같습니다.