프로그래밍에서 중복된 코드를 계속 작성하는 것은 유지보수 악몽으로 이어진다. 이 문제를 해결하는 핵심 도구가 바로 메서드(Method)이다. 자바에서 메서드는 특정 기능을 수행하는 코드 블록이며, 재사용성·가독성·유지보수성을 크게 높여준다.
메서드란?
- 수학의 함수(Function)와 유사한 개념이다.
- 입력(매개변수, parameter)을 받아 처리 후 출력(반환값, return)을 제공한다.
- 코드 중복 제거 + 기능 단위 분리 → 프로그램 구조 개선
public static int add(int a, int b) {
int sum = a + b; return sum;
}
- add(3, 5)으로 호출 시 → 8 반환
- 같은 메서드를 여러 번 호출해 재사용할 수 있다.
메서드 선언과 구조
제어자 반환타입 메서드명(매개변수 목록) {
// 메서드 본문
return 결과값; // 반환타입이 void가 아닐 경우 필수
}
- 제어자(Modifier): public, static 등 (접근 범위·정적 여부)
- 반환타입(Return Type): 결과 데이터 타입 (int, String, void)
- 메서드명(Method Name): 호출 시 사용할 이름 (보통 소문자 + 동사)
- 매개변수(Parameter): 입력 값 정의 (없을 수도 있음)
- 본문(Method Body): 실행할 코드
반환타입과 return
값 반환 메서드
public static boolean isOdd(int num) {
return num % 2 == 1;
}
반환 없는 메서드 (void)
public static void printHeader() {
System.out.println("=== 프로그램 시작 ===");
}
- return을 만나면 메서드가 즉시 종료된다.
- void 메서드는 return을 생략할 수 있다.
메서드 호출과 값 전달
자바의 대원칙: 자바는 항상 변수의 값을 복사해서 전달한다.
public static void main(String[] args) {
int num = 5;
changeNumber(num);
System.out.println(num); // 여전히 5
}
public static void changeNumber(int x) {
x = x * 2;
}
- num의 값 5가 x에 복사된다. 이때 x의 변경은 num에 영향을 주지 않는다.
- 값을 바꾸려면 반환값을 받아 대입해야 한다.
num = changeNumber(num); // 이제 num=10
메서드와 형변환
- 타입이 맞지 않으면 호출이 불가능하다. → 명시적 형변환 필요함
public static void printNumber(int n) {
System.out.println(n);
}
double d = 1.5;
printNumber((int) d); // 명시적 형변환
- 자동 형변환도 적용된다. (int → double 등)
public static void printNumber(double n) {
System.out.println(n);
}
int x = 100;
printNumber(x); // 자동 형변환 (100 → 100.0)
메서드 오버로딩 (Overloading)
같은 이름의 메서드를 매개변수 타입·개수로 구분할 수 있다.
public static int add(int a, int b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
public static double add(double a, double b) {
return a + b;
}
- 반환타입만 다르면 오버로딩 불가!
- (int add(int a, int b) vs double add(int a, int b) 의 경우에는 오버로딩이 불가능하다.)
- 자바는 메서드 시그니처(이름+매개변수)로 메서드를 구분한다.
메서드 사용의 장점
- 재사용성: 반복 코드가 제거된다.
- 가독성: 코드 구조가 "목차"처럼 깔끔해진다.
- 유지보수성: 관련 로직이 메서드 단위로 모듈화된다.
- 확장성: 새로운 기능 추가·변경이 용이하다.
- 추상화: 호출자는 내부 구현을 몰라도 된다.
- 테스트 용이: 독립적으로 테스트할 수 있다.
정리하자면...
- 메서드는 코드를 기능 단위로 분리하고 재사용 가능하게 한다.
- 반드시 반환타입, 메서드명, 매개변수, 본문으로 구성된다.
- 자바는 항상 값을 복사해서 전달한다. (참조형도 “참조값”을 복사)
- 오버로딩을 활용하면 같은 이름의 메서드를 다양한 방식으로 호출 가능하다.
메서드는 자바 프로그래밍의 "설계 단위"이다.
작은 프로그램에서는 단순 반복 제거 수준이지만, 규모가 커질수록 구조화·모듈화·확장성을 책임지는 핵심 개념이 된다.
'java' 카테고리의 다른 글
| Java 기본형(Primitive) vs 참조형(Reference) 정리 (0) | 2025.09.14 |
|---|---|
| Java 클래스와 데이터 정리 (0) | 2025.09.11 |
| Java 배열(Array) 정리 (0) | 2025.09.10 |
| Java 스코프(Scope)와 형변환(Type Casting) 정리 (0) | 2025.09.09 |
| Java 반복문(Loop) 정리 (0) | 2025.09.09 |