
메서드는 “특정 작업을 수행하도록 이름을 붙인 코드의 묶음”이다.
프로그램이 실행되면서 필요할 때 해당 작업을 대신 수행하도록 호출된다.
즉, 메서드는 실행 흐름 중간에 “잠깐 이동해서 처리하고 다시 돌아오는 공간”이다.
메서드 자체가 자동으로 실행되지는 않으며, 반드시 호출되어야 실행된다.
재사용성, 중복 제거, 유지보수 용이
컴퓨터는 위에서 아래로 한 줄씩 코드를 실행한다.
하지만 모든 로직을 한 줄 흐름으로 작성하면 코드가 길어지고 관리가 어려워진다.
메서드는 이 흐름을 논리적인 단위로 나누기 위해 존재한다.
하나의 메서드는 하나의 역할만 담당하는 것이 이상적이다.
메서드를 만든다는 것은 “이런 작업을 할 수 있는 기능을 미리 정의한다”는 의미다.
아직 실행되는 것은 아니고, 단지 사용할 준비만 해두는 단계다.
static int add(int a, int b) {
return a + b;
}
위 코드는 “두 정수를 받아서 더한 뒤 결과를 돌려주는 기능”을 정의한 것이다.
메서드는 아래 요소로 구성된다.
반환 타입 : 메서드가 작업을 끝낸 뒤 돌려주는 값의 타입
메서드 이름 : 이 기능을 부를 때 사용하는 이름
매개변수(Parameter) : 메서드가 작업을 하기 위해 외부로부터 받는 값
전달 인자(argument): 함수를 호출할 때 전달되는 실제 값
메서드 바디 : 실제 실행되는 코드 블록
반환타입 메서드이름(매개변수들) {
실행 코드
}
Parameter는 메서드가 실행되기 전에 “외부로부터 전달받는 값”을 담는 변수다.
메서드 내부에서만 사용 가능하며, 호출될 때마다 새로 생성된다.
static int square(int n) {
return n * n;
}
여기서 n은 메서드 내부에서만 존재하는 지역 변수다.
Argument는 메서드를 호출할 때 실제로 전달하는 값이다.
Parameter에 복사되어 전달되며, 원본 변수와는 별개다.
int x = 5;
int result = square(x);
x가 argument이고, n이 parameter다.
x의 값이 n으로 복사되어 메서드가 실행된다.
메서드를 호출하면 프로그램의 실행 흐름이 해당 메서드로 이동한다.
호출한 위치는 기억된 상태로 대기한다.
메서드 실행이 끝나면 return 값을 가지고 원래 위치로 돌아온다.
void 메서드의 경우 값 없이 돌아온다.
static int process(int n) {
return n + 1;
}
int a = process(3);
이 과정은 다음 순서로 진행된다.
1) process(3) 호출
2) 3이 n으로 전달
3) n + 1 계산
4) 결과값 4 반환
5) a에 4 저장
return은 값을 반환하는 역할과 동시에 메서드를 즉시 종료시키는 역할을 한다.
static int check(int n) {
if (n < 0) {
return -1;
}
return n;
}
return이 실행되면 그 아래 코드는 실행되지 않는다.
void 메서드는 결과값을 돌려주지 않는다.
주로 출력, 상태 변경, 로그 처리 등에 사용된다.
static void print(int n) {
System.out.println(n);
}
반환 메서드는 계산 결과를 다시 호출자에게 전달한다.
값을 기반으로 다음 로직을 이어갈 수 있다.
static int add(int a, int b) {
return a + b;
}
메서드는 변수 자체를 넘겨받아 바꾸는 것이 아니라,
값을 복사해서 처리한 뒤 결과를 돌려준다.
그래서 메서드 내부에서 parameter 값을 변경해도
호출한 쪽의 변수에는 영향을 주지 않는다.
메서드는 “실행 순서를 쪼개는 도구”다.
메인 메서드는 흐름을 관리하고, 실제 작업은 메서드가 담당한다.
입력 → 처리 → 결과 반환 이 흐름을 메서드 단위로 나누는 것이 핵심이다.
메서드는 코드 묶음이 아니라 실행 흐름을 이동시키는 구조다.
parameter는 받는 값, argument는 전달하는 값이라는 구분이 중요하다.
메서드 호출은 “값 전달 → 실행 → 결과 반환 → 복귀”의 과정이라는 점을 명확히 이해했다.