[JAVA] 06 메서드(Method)

[JAVA] 06 메서드(Method)

메서드는 특정 기능을 수행하는 코드의 묶음이다. 중복되는 코드를 줄이고, 프로그램의 구조를 명확하게 만들기 위해 사용한다.


1. 메서드란

메서드(Method)는 하나의 기능을 수행하도록 정의된 코드 블록이다. 필요할 때 호출하여 실행할 수 있다.

프로그램은 메서드 호출을 통해 위에서 아래로 실행 흐름을 이동한다.


2. 메서드 기본 구조


접근제어자 반환타입 메서드명(매개변수) {
    // 실행 코드
    return 반환값;
}

반환값이 없는 경우 반환타입으로 void를 사용한다.


3. 메서드 선언과 호출

메서드 선언


static void printHello() {
    System.out.println("Hello");
}

메서드 호출


printHello();

OUTPUT


Hello

메서드는 호출되어야 실행된다.


4. 매개변수(Parameter)


static void printSum(int a, int b) {
    System.out.println(a + b);
}

printSum(3, 5);

OUTPUT


8

메서드 호출 시 전달되는 값은 인자(argument)라고 한다.


5. 반환값(Return)


static int add(int a, int b) {
    return a + b;
}

int result = add(3, 5);
System.out.println(result);

OUTPUT


8

return 문이 실행되면 메서드는 즉시 종료된다.


6. 반환값이 없는 메서드


static void printMessage(String msg) {
    System.out.println(msg);
}

printMessage("Java");

OUTPUT


Java

7. 매개변수 전달 방식

자바는 값에 의한 전달(call by value) 방식을 사용한다.

기본형 전달


static void changeValue(int x) {
    x = 100;
}

int a = 10;
changeValue(a);
System.out.println(a);

OUTPUT


10

기본형은 값이 복사된다.

참조형 전달


static void changeArray(int[] arr) {
    arr[0] = 100;
}

int[] data = {1, 2, 3};
changeArray(data);
System.out.println(data[0]);

OUTPUT


100

참조형도 값에 의한 전달이다. 다만 "주소값"이 복사되므로 객체 내부 값은 변경될 수 있다.


8. 메서드 오버로딩


static int add(int a, int b) {
    return a + b;
}

static int add(int a, int b, int c) {
    return a + b + c;
}

매개변수 개수나 타입이 달라야 한다. 반환 타입만 다른 경우는 오버로딩이 아니다.


9. 가변 인자 (Varargs)


static int sum(int... numbers) {
    int total = 0;
    for (int n : numbers) {
        total += n;
    }
    return total;
}

System.out.println(sum(1, 2, 3, 4));

OUTPUT


10

가변 인자는 내부적으로 배열로 처리된다.


10. 재귀 함수


static int factorial(int n) {
    if (n == 1) return 1;
    return n * factorial(n - 1);
}

System.out.println(factorial(5));

OUTPUT


120

재귀 호출은 반드시 종료 조건이 필요하다.


11. 호출 스택(Call Stack)

메서드가 호출되면 스택 메모리에 프레임이 생성된다. 메서드가 종료되면 스택에서 제거된다.

재귀 호출이 깊어지면 StackOverflowError가 발생할 수 있다.


12. main 메서드


public static void main(String[] args) {
    // 프로그램 시작 지점
}

JVM은 main 메서드를 찾아 실행한다.


13. 메서드 분리 기준 (실무 관점)

  • 하나의 기능만 수행 (단일 책임)
  • 중복 제거
  • 이름만 보고 역할이 드러나야 함
  • 너무 긴 메서드는 분리

정리

  • 메서드는 코드 재사용과 구조화를 위한 문법이다.
  • 매개변수와 반환값을 통해 데이터를 주고받는다.
  • 자바는 값에 의한 전달을 사용한다.
  • 가변 인자와 오버로딩으로 유연성을 제공한다.
  • 재귀 호출은 종료 조건이 필수다.

'Computer Science > Java' 카테고리의 다른 글

[JAVA] 08 객체지향(OOP) 4대 특징  (0) 2026.02.15
[JAVA] 07 클래스와 객체  (0) 2026.02.15
[JAVA] 05 배열(Array)  (0) 2026.02.15
[JAVA] 04 반복문 for / while  (0) 2026.02.15
[JAVA] 03 조건문 if / switch  (0) 2026.02.15