☕️ [Java] 자바 가변 인자(Variable Arguments)와 두 가지 사용법에 대해서

이서·2023년 9월 20일
0

☕️ Java 트랙

목록 보기
1/3

🏎️💨 삡삡 안녕하세요 이서입니다😇 이번 포스팅에서는 자바 가변 인자에 대해서 알아보고자 해요. RABOJA🥸

Java에서 가변 인자(variable arguments)는 메서드의 매개변수로 변수의 수가 가변적인 경우에 사용해요. 가변 인자를 사용하면 동일한 메서드를 다양한 개수의 인자로 호출할 수 있으며, 가독성과 코드 유지보수를 향상시킬 수 있어요. Java 5부터 이 기능이 도입되었으며, 가변 인자는 ... (세 개의 점)으로 표시해요.

가변 인자 특징

  1. 매개변수로 배열을 사용하는 대신 가변 인자를 사용하여 메서드를 호출할 수 있어요.
  2. 가변 인자는 메서드 내에서 배열로 처리해요.
  3. 메서드의 선언에서 가변 인자는 항상 마지막 매개변수여야 해요.
  4. 가변 인자를 사용한 메서드는 같은 타입의 인자를 여러 개 받을 수 있어요.

가변 인자의 사용법

  1. 메서드 선언 시 가변 인자를 사용할 매개변수 타입 뒤에 "..."을 추가해요.
  2. 가변 인자로 전달되는 값은 배열로 처리되므로, 메서드 내부에서 배열과 유사하게 다룰 수 있어요.
public class VariableArgumentsExample {

    // 가변 인자를 사용한 메서드
    public static int sum(int... numbers) {
        int total = 0;
        for (int num : numbers) {
            total += num;
        }
        return total;
    }

    public static void main(String[] args) {
        // 다양한 개수의 인자로 메서드 호출
        int sum1 = sum(1, 2, 3);          // 6
        int sum2 = sum(10, 20, 30, 40);  // 100

        System.out.println("sum1: " + sum1);
        System.out.println("sum2: " + sum2);
    }
}

위의 코드에서 sum 메서드는 가변 인자를 사용하여 다양한 개수의 정수를 더할 수 있어요. sum 메서드를 호출할 때 인자의 개수가 가변적이므로, 1개의 인자로 호출하든 4개의 인자로 호출하든 모두 동작해요.

가변 인자의 타입은 배열이에요. 따라서 int… 로 가변 인자 타입을 사용했다면, 해당 파라미터의 타입은 메서드 내에서 int[]이 돼요.

public void test(int... ints) {
	System.out.println(ints instanceof int[]); // ture
}

가변 인자를 전달하는 또다른 방법

우리는 보통 가변 인자를 사용하면 쉼표를 통해 여러 인자를 작성하는 방법만 알고 있는 경우가 많아요. 하지만 가변 인자를 넘겨줄 때 사용 방법이 한 가지 더 있다는 점 아시나요?

가변 인자는 메서드 내부에서 배열로 처리한다는 것을 기억하시나요? 따라서 가변인자는 쉼표(,)를 통해 여러 인자를 작성할 수 있는 것 뿐만 아니라, 단 하나의 배열 인자를 받을 수도 있어요. 가변 인자에 배열을 넘기게 되면, 쉼표를 통해 여러 인자를 전달할 수는 없어요.

int[] ints = {1, 2, 3};
int sum3 = sum(ints); // 배열을 받을 수 있어요.
int sum4 = sum(new int[]{1, 2, 3});

// 아래의 코드는 컴파일 에러가 발생해요.
int sumError = sum(ints, 1, 2, 3); // Compile Error!!

가변 인자를 사용하면 메서드 호출 시 편의성을 높일 수 있으며, 다양한 개수의 인자를 처리하는 데 유용해요😆

profile
🏎️💨 Beep Beep

0개의 댓글