목차
반응형

1. 가변 인자
메서드의 고정적인 매개변수 인자 값의 개수를 가변적으로 조절할 수 있는 기능입니다.
1-1. 동적으로 매개변수 개수를 조절할 수 없어 불편하다...
`한 번쯤은 생각해 보신 경험이 있으실 수 있습니다.`
매개변수 인자의 개수가 다를 때마다 모든 메서드를 오버로딩해야 하는 귀찮음과 막막함!
java
닫기public int void sum(a + b) { return a + b; } public int void sum(a + b + c) { return a + b + c; } public int void sum(a + b + c + d) { return a + b + c + d; } // 끝도 없다 ...
하지만 다행스럽게도 이런 비효율적인 메소드 처리를 효율적으로 줄이고,
매개변수 개수를 동적으로 조절할 수 있는 문법이 있으니, 그것이 바로 가변인자 VarArgs입니다.
2. java 가변인자 사용법
2-1. 가변인자 :... 을 통해 사용하고, 향상된 for문(iter)을 통해 꺼내 쓴다
매개변수 인자 Type T... t로 입력하며, 출력에는 향상된 for문 (T element : t)로 사용합니다.
java
닫기public int varArgs1(int... i) { int sum = 0; for (int num : i){ sum += num; } return sum; } System.out.println(varArgs1(1, 3, 5, 7, 9)); // out : 25
해당 메서드는 int 타입의 매개변수를 개수 상관없이 동적으로 입력받아 그 합을 리턴하는 메서드입니다.
이와 같이 가변인자 사용에는 3가지 특징이 있습니다.
- 인자 입력에는... 문법을 사용합니다.
- 해당 인자를 메서드에서 활용할 때는 향상된 for문으로 꺼냅니다.
- ... 를 통해 java에서는 메소드 내부적으로 인자값에 대한 배열을 만들어 냅니다.
3번에 대한 증명 예시는 아래와 같습니다.
2-2) 가변인자는 내부적으로 인자에 대한 배열을 생상 한다
java
닫기public int[] varArgs2(int...i){ return i; } System.out.println(Arrays.toString(T.varArgs2(1, 3, 5, 7, 9))); // out : [1, 3, 5, 7, 9]
이 메서드를 통해 가변인자는 메소드 내부에서 자연적으로 가변 인자들의 배열을 생성함을 알 수 있습니다.
2-3) 가변인자는 불변인자 이후 맨 뒤에 사용해야 한다
java
닫기public void varArgs3(int a, int b, int...i){ System.out.println(a + " : 저는 불변인자입니다"); System.out.println(b + " : 저도 불변인자입니다"); System.out.println(Arrays.toString(i) + " : 저희는 가변인자입니다"); } varArgs3(1,3,5,7,9); // out : // 1 : 저는 불변인자입니다 // 3 : 저도 불변인자입니다 // [5, 7, 9] : 저희는 가변인자입니다
가변인자는 고정으로 입력받는 매개변수 값인 불변인자가 앞에서 정의된 이후, 맨 뒤의 인자로 사용이 가능합니다.
메소드 인자의 앞에서 가변인자가 선언되고, 불변인자가 이후에 위치하면 컴파일 에러를 발생시킵니다.
가변인자 사용법에 대해 알아봤습니다.
# 구현 코드
반응형
'DEV > Java' 카테고리의 다른 글
[Java][Lombok] @Builder와 @ToBuilder의 이해 (1) | 2023.11.30 |
---|---|
[Java][lombok] @ToString에 대한 이해와 적용 (0) | 2023.11.14 |
[java] 스트림 도전기 (3 / 3) - 스트림 생성 ~ 연산까지 (0) | 2023.10.26 |
[java] json.simple 활용 JSON 데이터 저장, 불러오기 (0) | 2023.10.25 |
[java] NoSuchElementException 예외의 이해와 발생사례 (1) | 2023.10.25 |