메서드 기본 개념
메서드는 특정 기능을 수행하는 코드 블록입니다. 주요 장점:
- 코드 모듈화로 복잡성 감소
- 재사용성을 통한 개발 효율 향상
- 가독성 및 유지보수성 개선
// 윤년 판별 메서드 예시
public class CalendarUtil {
public static boolean checkLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
메서드 정의 규칙
// 정수 곱셈 메서드
public class MathOperations {
public static int multiply(int first, int second) {
return first * second;
}
}
주요 규칙:
- 반환 타입 존재시 일치해야 함
- 메서드명은 카멜 케이스 적용
- 클래스 내부에서만 정의 가능
- 메서드 중첩 정의 불가
실행 과정과 매개변수
// 메서드 호출 순서 확인
public class ProcessDemo {
public static void main(String[] args) {
int result = calculate(5, 7);
System.out.println("결과: " + result);
}
public static int calculate(int a, int b) {
System.out.println("계산 수행 중");
return a * b;
}
}
매개변수 특성:
- 값에 의한 호출(call by value)
- 기본형 매개변수는 원본 미영향
- 배열은 참조 전달 가능
// 배열을 이용한 값 교환
public class ArraySwap {
public static void swapValues(int[] data) {
int temp = data[0];
data[0] = data[1];
data[1] = temp;
}
}
메서드 오버로딩
동일한 이름의 메서드를 매개변수 차이로 여러 개 정의:
public class Calculator {
public static int sum(int x, int y) {
return x + y;
}
public static double sum(double x, double y) {
return x + y;
}
public static int sum(int x, int y, int z) {
return x + y + z;
}
}
오버로딩 조건:
- 메서드명 동일
- 매개변수 타입/개수/순서 상이
- 반환 타입은 무관
재귀 호출 메커니즘
자기 자신을 호출하는 프로그래밍 기법:
// 팩토리얼 재귀 구현
public class RecursionExample {
public static int factorial(int number) {
if (number == 1) return 1;
return number * factorial(number - 1);
}
}
재귀 필수 조건:
- 기본 사례(base case) 존재
- 재귀 호출이 더 작은 문제 해결
// 숫자 합계 재귀 계산
public class DigitOperations {
public static int digitSum(int value) {
if (value < 10) return value;
return value % 10 + digitSum(value / 10);
}
}
주의사항:
- 종료 조건 필수
- 과도한 중복 계산 회피
- 반복문 대체 가능시 성능 고려