[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 |