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
댓글