Software/Java

[Java] 메소드의 타입 4가지 (고정값, 고정일, 가변값, 가변일)

TGnCo 2025. 1. 23. 09:30

Java

 

 

자바 메소드에서의 고정값, 고정일, 가변값, 가변일에 대한 이해

자바에서 메소드를 정의할 때, 파라미터와 그 값을 전달하는 방식에는 여러 가지가 있습니다. 이를 잘 이해하는 것은 코드의 효율성을 높이고, 메소드를 작성할 때 유연성을 확보하는 데 중요합니다. 오늘은 자바 메소드에서 고정값 (Fixed Value), 고정일 (Fixed Argument), 가변값 (Variable Value), 가변일 (Variable Argument) 의 차이점과 활용법에 대해 알아보겠습니다.

 


 

1. 고정값 (Fixed Value) - 값이 고정된 파라미터

 

고정값은 메소드 호출 시에 항상 고정된 값을 전달하는 방식입니다. 이때 고정된 값은 메소드를 호출할 때마다 변하지 않으며, 항상 동일한 값으로 처리됩니다.

public class FixedValueExample {
    public static void printValue(int value) {
        System.out.println("전달된 값은: " + value);
    }

    public static void main(String[] args) {
        printValue(5); // 항상 5라는 값을 전달
    }
}

위 코드에서 printValue() 메소드는 항상 고정된 값인 5를 출력합니다. 이때 value 파라미터는 고정값을 가집니다.

 


 

2. 고정일 (Fixed Argument) - 메소드 정의에서 고정된 파라미터

 

고정일은 메소드 정의에서 고정된 파라미터를 의미합니다. 즉, 메소드 호출 시 해당 파라미터는 고정되어 있어, 항상 특정 값의 자료형과 순서를 따릅니다. 고정일은 메소드 시그니처에 명시된 파라미터에 해당하며, 메소드를 호출할 때 반드시 값이 전달되어야 합니다.

public class FixedArgumentExample {
    public static void displayInfo(String name, int age) {
        System.out.println("이름: " + name + ", 나이: " + age);
    }

    public static void main(String[] args) {
        displayInfo("홍길동", 25); // "홍길동", 25가 고정된 파라미터로 전달됨
    }
}

이 경우, displayInfo 메소드에서 nameage는 고정된 파라미터로 정의되어 있으며, 메소드를 호출할 때 반드시 두 값이 전달됩니다.

 


 

3. 가변값 (Variable Value) - 메소드 호출 시 전달되는 값이 가변적

 

가변값은 메소드 호출 시 전달되는 값이 여러 개일 수 있음을 의미합니다. 이는 메소드 내부에서 전달된 값의 개수를 동적으로 처리할 수 있도록 합니다. 자바에서는 가변 인자(variable-length arguments)를 사용하여 이를 구현할 수 있습니다.

public class VariableValueExample {
    public static void sumNumbers(int... numbers) {  // '...'는 가변 인자를 의미
        int sum = 0;
        for (int num : numbers) {
            sum += num;
        }
        System.out.println("합계: " + sum);
    }

    public static void main(String[] args) {
        sumNumbers(1, 2, 3); // 1 + 2 + 3 = 6
        sumNumbers(4, 5, 6, 7, 8); // 4 + 5 + 6 + 7 + 8 = 30
    }
}

위 코드에서 sumNumbers 메소드는 가변 인자를 사용하여 전달된 숫자의 개수에 상관없이 모두 더할 수 있습니다. 이렇게 가변값을 사용하면 인자의 개수가 고정되어 있지 않아 유연한 메소드 호출이 가능합니다.

 

 


 

4. 가변일 (Variable Argument) - 메소드 정의에서 가변적인 인자

 

가변일은 메소드 정의에서 인자의 개수가 가변적이라는 의미입니다. 자바에서는 메소드의 매개변수를 ... (varargs) 형식으로 사용하여, 여러 개의 인자를 하나의 배열처럼 다룰 수 있습니다. 이와 함께 가변 인자는 항상 마지막에 정의되어야 한다는 규칙이 있습니다.

public class VariableArgumentExample {
    public static void displayNumbers(int... numbers) { // 가변 인자
        for (int num : numbers) {
            System.out.println(num);
        }
    }

    public static void main(String[] args) {
        displayNumbers(10, 20, 30); // 3개의 숫자 출력
        displayNumbers(1, 2); // 2개의 숫자 출력
    }
}

displayNumbers 메소드는 가변 인자를 사용하여, 전달되는 인자 개수에 관계없이 동적으로 숫자를 출력합니다. numbers는 전달된 값들을 배열 형태로 처리할 수 있습니다.

 


 

고정값과 가변값의 차이점

 

  • 고정값 (Fixed Value): 메소드 호출 시 항상 일정한 값이 전달됩니다.
  • 고정일 (Fixed Argument): 메소드에서 항상 고정된 수의 파라미터를 요구합니다.
  • 가변값 (Variable Value): 메소드 호출 시 전달되는 값의 개수가 유동적이며, 다양한 형태로 값이 전달될 수 있습니다.
  • 가변일 (Variable Argument): 메소드에서 매개변수의 개수가 유동적이며, 인자 목록이 배열로 처리됩니다.

 


 

결론

 

자바에서 메소드를 정의할 때, 고정값과 가변값을 적절하게 활용하면 코드의 유연성과 재사용성을 높일 수 있습니다. 특히, 가변 인자(...)를 사용하면 메소드 호출 시 전달되는 값의 개수를 유동적으로 처리할 수 있어 매우 유용합니다. 하지만 가변 인자는 항상 메소드의 마지막 파라미터로 위치해야 하므로, 이를 염두에 두고 메소드를 작성하는 것이 중요합니다.