가변 인자(varargs)

2021. 1. 7. 14:38·자바/기본적인 개념

1. 가변 인자

(1) 아래와 같은 "타입... 변수명"과 같은 형식으로 선언하며, PrintStream 클래스의 printf()가 대표적인 예이다.

public PrintStream printf(String format, Object... args) { ... }

 

(2) 가변 인자 외에도 더 추가할 매개변수가 있다고 한다면, 맨 뒤에 가변 인자를 두어야 한다.

 

(3) 아래의 함수와 같이 앞에 가변인자를 두게 되면 컴파일 에러가 발생한다.

public PrintStream printf(Object... args, String format) { ... }

 

 

 

 

2. 예제 - 가변 인자를 활용하여 오버로딩 구현

( 위 예제는 오버로딩을 구현했는데, 계속 해서 매개변수를 String으로 늘린다면, 차라리 String a(String... str)

로 줄여서 바꾸는 것이 가독성에 좋다. )

 

( 위의 형식처럼 가변인자를 매개변수로 사용한다면, 호출하는 입장에서 인자가 없음 또는 인자가 하나, 인자가 여러

개까지도 가능하며, 심지어 배열도 가능하다. )

( 단, 배열은 전달할 때 파라미터로 배열 하나만 넣을 수 있다. )

 

( 아래의 코드를 통해 이해하자. )

 

 

 

 

3. 잘못된 예제

( 가변인자에 오버로딩까지 구현하였다. )

( 그러나, 오류가 발생하였는데, 그 이유는 어떤 메서드를 호출해야 할지 컴파일러가 모르기 때문이다. )

 

( 그래서 가급적이면 가변인자를 쓴 메서드를 오버로딩까지 구현하는 것은 피해야 한다. )

'자바 > 기본적인 개념' 카테고리의 다른 글

초기화 블럭  (0) 2021.01.08
생성자  (0) 2021.01.07
오버 로딩  (0) 2021.01.07
클래스 맴버와 인스턴스 맴버간의 참조와 호출  (0) 2021.01.07
클래스 메서드(static 메서드)와 인스턴스 메서드  (0) 2021.01.07
'자바/기본적인 개념' 카테고리의 다른 글
  • 초기화 블럭
  • 생성자
  • 오버 로딩
  • 클래스 맴버와 인스턴스 맴버간의 참조와 호출
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      안드로이드 스튜디오
      Collections Framework
      java.lang패키지
      유용한 클래스
      소켓 프로그래밍
      제자리 정렬
      snail
      outputstream
      알고스팟
      불안정 정렬
      코딩테스트
      코드트리
      중간연산
      file
      안정 정렬
      Arrays
      다형성
      코딩트리조별과제
      InputStream
      역직렬화
      람다식
      ServerSocket
      map()
      문자 기반 스트림
      스트림
      TCP 소켓 프로그래밍
      자바 개념
      선택 정렬
      serializable
      java.time 패키지
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    가변 인자(varargs)
    상단으로

    티스토리툴바