오늘 새로 배운 내용
Java Varargs (가변인자)
오늘은 Java 5부터 도입되었다는 Varargs (가변인자) 기능을 알게 되었다.
Varargs기능은 메서드의 매개변수로 동적인 개수의 인수를 전달할 수 있게 해주는 기능으로, 메서드가 동일한 타입의 인수를 다양하게 받을 수 있게 해 준다.
아래 예시 코드르 보면 이해가 편하다.
public void printNumbers(int... numbers) {
for (int num : numbers) {
System.out.println(num);
}
}
printNumbers(1, 2, 3); // 1, 2, 3을 인수로 전달
printNumbers(10, 20); // 10, 20을 인수로 전달
printNumbers(100); // 100을 인수로 전달
printNumbers() 메서드 선언에서 매개변수 타입 뒤에...로 선언해서 ('int... numbers') varargs를 사용할 수 있다.
메서드를 사용하는 곳에서는 int타입의 인자를 여러 개 전달할 수 있다. (ex. printNumbers(1, 2, 3))
Varargs 특징
- 각 메서드에는 하나의 varargs 매개변수만 가질 수 있다.
- varargs 인자는 마지막 매개변수여야 한다.
prinNumbers(int... numbers, Long number) -> x
prinNumbers(Long number, int... numbers) -> O
- 가변인자는 메서드 내부에서 인수의 개수를 동적으로 처리하는 유연성을 제공한다.
하지만 varargs는 메서드는 호출될 때마다 배열을 새로 하나 할당하고 초기화한다는 단점이 존재한다.
(애플리케이션 성능에 큰 영향을 미치는 수준은 아니지만 메서드가 자주 호출되고 메서드에 전달되는 인수의 수가 많을 경우, 배열이나 컬렉션을 미리 생성해서 전달하는 방식이 더 효율적일 수 있다.)
'성장이야기 > TIL' 카테고리의 다른 글
[개발일지] 230608 실시간 급상승 검색어 알고리즘 (1) | 2023.06.08 |
---|---|
[개발일지] 230607 Ranking Algorithm(순위 알고리즘) (0) | 2023.06.07 |
[개발일지] 230531 직렬화 중 만난 Jackson 버전 문제 (0) | 2023.05.31 |
[개발일지] 230529 인스턴스화를 막기 위해 private 생성자를 사용하자 (0) | 2023.05.29 |
[개발일지] 230526 정적 멤버 클래스를 이용해 불필요한 중복을 제거하자 (0) | 2023.05.26 |