가변인자
JDK 1.5부터 매개변수의 개수를 동적으로 지정할 수 있음
이 기능을 가변인자 (variable argument)라고 함
void test(String ... args){}; 와 같이 메서드 명(타입 ... 파라미터명) 으로 작성해주면 된다.
내부적으로 배열을 이용하며 가변인자가 선언된 메서드를 호출할때 마다 배열이 새로 생성됨
즉 인자값을 개수에 상관없이 넣어서 사용할 수 있다는 말
테스트 해보니 가변인자는 파라미터의 순서중 마지막에 있어야 컴파일 에러가 나지 않음
void test(String ... args, String str){} // Error
가변인자와 매개변수의 타입을 배열로하는 것과 어떤차이가 있는가?
반드시 인자를 지정해줘야 하기때문에 가변인자처럼 인자를 생략할 수 없음
String concatenate(String[] srtrs){}; String result = concatenate (); // Error String result = concatenate (null); String result = concatenate (new String [0]);
가능하면 가변인자를 사용한 메서드는 오버로딩 하지 않는 것이 좋음
예시
public static void test (String ... strings) { System.out.println(); System.out.println("───────────────"); System.out.println(strings.length); for (int i = 0; i < strings.length; i++) { System.out.println(strings[i]); } System.out.println("───────────────"); } public static void main(String[] args) { String t1 ="1"; String t2 ="2"; String t3 ="3"; String t4 ="4"; String t5 ="5"; test(); // 비어있어도 Ok // test(new String[] {"a", "b"}); // 배열이어도 OK test(t1, t2, t3, t4, t5); }
'Main > Java' 카테고리의 다른 글
[JAVA] 클래스변수 (Static 변수), static (0) | 2020.01.14 |
---|---|
[JAVA] 생성자 (Constructor) , this(), this (0) | 2020.01.14 |
[JAVA] 리턴값이 여러개인 함수 만드는 방법 (2) | 2020.01.09 |
[JAVA] return문 (0) | 2020.01.09 |
[JAVA] 객체, 클래스, 인스턴스란? (0) | 2020.01.07 |