자주 반복되는 작업을 하나의 코드 블록으로 정의해 재사용할 수 있게 해주는 메서드(method)는 가독성과 유지보수를 높이는 핵심 도구이다.
int a = 1, b = 2;
System.out.println(a + "+" + b + " 연산 수행");
int sum1 = a + b;
int x = 10, y = 20;
System.out.println(x + "+" + y + " 연산 수행");
int sum2 = x + y;
public static int add(int a, int b) {
int sum = a + b;
return sum;
}
public static: 제어자int: 반환 타입 (리턴값의 타입)add: 메서드 이름 (호출 시 사용)(int a, int b): 매개변수(파라미터) – 메서드에 전달하는 값{ ... }: 메서드 본문 – 실제 동작을 수행하는 코드 블록int sum1 = add(5, 10); // 결과: 15
int sum2 = add(15, 20); // 결과: 35
add(5, 10) 호출 → 메서드 내부 실행 → 결과 15 반환 → 변수에 저장자바에서는 메서드를 호출할 때, 전달하는 값(인수)의 타입이 메서드가 정의한 매개변수 타입과 다를 수 있음
이때 자바는 형변환(casting)을 자동 또는 명시적으로 처리해야 한다.
작은 타입 → 큰 타입으로 넘길 때는 자바가 자동으로 형을 맞춰준다.
public static void printDouble(double value) {
System.out.println("실수: " + value);
}
int i = 10;
printDouble(i); // int → double 자동 형변환
int는 double보다 작은 타입10을 10.0으로 변환해서 넘겨줌큰 타입 → 작은 타입으로 넘기면 컴파일 에러 발생!
이 경우 개발자가 명시적으로 형변환을 해줘야 한다.
public static void printInt(int value) {
System.out.println("정수: " + value);
}
double d = 3.14;
printInt((int) d); // 명시적 형변환 필요 → 결과: 3
3.14는 정수형보다 크므로 자동 변환 불가능(int)를 붙여서 강제로 정수로 변환해야 함printInt(3.14); // ❌ 컴파일 오류!
같은 이름의 메서드라도, 매개변수의 타입이나 개수가 다르면 여러 개 만들 수 있다.
이를 오버로딩(overloading)이라고 한다.
add지만, 매개변수 개수 또는 매개변수 타입이 다르기 때문에 각각 별개의 메서드로 인식됨public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
System.out.println(add(1, 2)); // int 버전 호출
System.out.println(add(1.0, 2.0)); // double 버전 호출
System.out.println(add(1, 2, 3)); // 파라미터 3개짜리 버전 호출
public static int test() {
return 1;
}
// 아래 메서드는 에러 발생!
public static double test() {
return 1.0;
}
같은 동작이지만 입력 방식이 다를 때
print(String) vs print(int)처럼 다양한 타입을 처리 가능
확장성 향상
같은 이름으로 처리 가능하므로 메서드 이름을 외우기 쉬움
코드 가독성 증가
의미 있는 메서드 이름을 일관되게 사용할 수 있음