[개발일지] 230602 Java Varargs(가변인자)란?

2023. 6. 2. 22:09·성장이야기/TIL

오늘 새로 배운 내용

 

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
'성장이야기/TIL' 카테고리의 다른 글
  • [개발일지] 230608 실시간 급상승 검색어 알고리즘
  • [개발일지] 230607 Ranking Algorithm(순위 알고리즘)
  • [개발일지] 230531 직렬화 중 만난 Jackson 버전 문제
  • [개발일지] 230529 인스턴스화를 막기 위해 private 생성자를 사용하자
seungjjun
seungjjun
  • seungjjun
    개발이야기
    seungjjun
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 성장이야기
        • TIL
        • 주간회고
      • Java
        • Spring
        • Spring Security
      • 트러블슈팅
      • Kafka
      • OS
      • Network
      • 메가테라
      • Database
      • Algorithm
      • Git
      • HTML
      • CSS
      • 독서
      • 컴퓨터 이해하기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    이커머스 프로젝트
    개발일지
    항해플러스
    Til
    항해99
    주간회고
    메가테라
    redis
    메가테라 주간회고
    graphQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
seungjjun
[개발일지] 230602 Java Varargs(가변인자)란?
상단으로

티스토리툴바