자바의정석
[자바의정석] 가변인자(varargs)
유호야
2021. 6. 25. 16:00
반응형
자바의 정석 복습 중
완전히 까먹은 개념 발견 "가변인자" (VARIABLE ARGUMENTS)
예제 6-22 를 약간 응용해봤다.
마지막 문자 뒤에는 구분자가 붙지 않게 조금 바꿔보았다.
package javasjungsuk;
public class VarArgsEx {
public static void main(String[] args) {
String strArr[] = { "100", "200", "300" };
System.out.println(concatenate(", ", strArr));
System.out.println(concatenate("-", "100", "200", "300"));
System.out.println(concatenate(" ", new String[] {"1","2","3"}));
}
static String concatenate(String delim, String... args) {
String result = "";
int count = 0;
for (String str : args) {
count++;
if(count == args.length) {
result += str;
} else {
result += str + delim;
}
}
return result;
}
}
배열이 매개변수로 선언된 경우 길이가 0인 배열 생성이 허용된다(C언어와 다른 점)
String args ...
매개변수의 마지막 자리에 위치해야 한다.
가변인자는 내부적으로 배열을 이용하는 것이다.
가변인자는 JDK 1.5부터 동적으로 지정해줄 수 있게 되었다.
가변인자를 이용한 대표적인 메소드가 PrintStream 클래스의 printf()이다.
System.out.println(concatenate("-", new String[]{"1", "2", "3"});
위의 문장은 가능 하지만 아래 문장은 불가능하다.
System.out.println(concatenate("-", {"1", "2", "3"});
가변인자를 사용할 때는 가능하면 메서드 오버로딩을 하지 않는 것이 좋다.
반응형