본문 바로가기
Spring/Java

[ Java ] Ellipsis (...) 가변인수 사용법 및 예제

by snow_hong 2022. 7. 15.

 

Ellipsis (...) 가변인수

인자들을 수에 상관없이 메소드로 전달하는 (...)매개변수

즉, 매개변수를 받긴 하지만 몇 개인지 모를 때 쓰이는 표현할 때 유용

 

- (...) 매개변수로 전달되는 인자들의 자료형은 반드시 같아야 한다.
- (...) 가변인수는 매개변수 가장 마지막에 작성해야 한다.
- (...) 앞에 매개변수가 있는 경우, 인자들이 앞에 있는 매개변수부터 하나씩 순서대로 전달되고 나머지 인자들이 (...)으로 전달된다.
- 가변배열 형태의 매개변수
※ Argument 인자: 매개변수로 전달된 실질적인 값

 

 사용법 

public void method(자료형... 매개변수명) {}  

 

 예제 1 

 public static void main(String args[])
    {
        System.out.println("Hello, World!");
    }

public static void main(String... args)
    {
        System.out.println("Hello, World!");
    }

String 배열 타입의 arguments를 받겠다 이런 뜻인데 이 코드를 다음과 같이 바꾸어도 잘 동작한다.

 

[ 결과 ]

Hello, World!

 

 예제 2 

import java.util.*;
import java.lang.*;

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

        vat.print("홍길동");
        vat.print("홍길동", "테스트");
        vat.print("홍길동", "테스트", "유저");
        vat.print("홍길동", "테스트", "유저", "it");
        vat.print("홍길동", "테스트", "유저", "it", "블로그");
    }
}

 

[ 결과 ]

홍길동,
홍길동, 테스트,
홍길동, 테스트, 유저,
홍길동, 테스트, 유저, it, 
홍길동, 테스트, 유저, it, 블로그,

 

 예제 3 

import java.util.*;
import java.lang.*;

class Rextester
{  
    
     public Rextester() {	//기본 생성자
		this("test", "test1", "test2", "test3");
		System.out.println("기본 생성자 End");
         System.out.println("=================================\n");
	}
 
	public Rextester(String... s) {	//매개변수를 갖는 생성자
       
        System.out.println("길이 : " +  s.length);
        
		for (int i = 0; i < s.length; i++) {
			System.out.print(s[i] + ", ");
		}
        System.out.println("");
        System.out.println("매개변수 생성자 End");
        System.out.println("----------------------------------");
        
    }
    
    public static void main(String... args)
    {
       // 객체 생성
         Rextester vat = new Rextester();
         Rextester vat2 = new Rextester("test", "test1");

    }
}

 

[ 결과 ]

길이 : 4
test, test1, test2, test3,
매개변수 생성자 End
----------------------------------
기본 생성자 End
=================================

길이 : 2
test, test1,
매개변수 생성자 End
----------------------------------

 

 

728x90

댓글