자바의정석

[자바의정석] 가변인자(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"});

 

가변인자를 사용할 때는 가능하면 메서드 오버로딩을 하지 않는 것이 좋다.

반응형