반응형
자바의 정석 복습 중
완전히 까먹은 개념 발견 "가변인자" (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"});
가변인자를 사용할 때는 가능하면 메서드 오버로딩을 하지 않는 것이 좋다.
반응형
'자바의정석' 카테고리의 다른 글
[자바의정석] 초기화 블럭(initialization block) (0) | 2021.06.25 |
---|---|
[자바의정석] 참조변수란? (0) | 2021.06.25 |
배열 크기 순 정렬 / 버블정렬 알고리즘 (0) | 2021.05.02 |
System.getProperty() (0) | 2021.04.21 |
@SuppressWarning (0) | 2021.04.16 |