
프로그램에서 같은 코드를 반복 작성하면 불편하고 유지보수도 어렵다.
예를 들어, 두 수를 더하는 연산을 여러 번 반복해야 한다고 해보자.
int a = 1;
int b = 2;
System.out.println(a + "+" + b + " 연산 수행");
int sum1 = a + b;
int x = 10;
int y = 20;
System.out.println(x + "+" + y + " 연산 수행");
int sum2 = x + y;
같은 연산 로직이 중복되어 코드가 지저분해진다.
이 문제를 해결하는 방법이 바로 메서드(Method)다.
수학의 함수(Function)처럼, Java의 메서드도 입력을 받아 어떤 처리를 하고 결과를 반환한다.
예시: 두 수를 더하는 함수
add(1,2) → 3
add(5,6) → 11
Java에서는 함수를 메서드라고 부른다.
public static int add(int a, int b) {
System.out.println(a + "+" + b + " 연산 수행");
int sum = a + b;
return sum;
}
선언부 : public static int add(int a, int b)
public static : 지금은 기본적으로 붙여서 사용한다. int : 반환 타입(Return Type) add : 메서드 이름 (int a, int b) : 매개변수(Parameter) 본문 : { ... } 안의 실행 코드
메서드는 이름을 통해 호출할 수 있다.
int result1 = add(5, 10);
int result2 = add(15, 20);
호출하면 입력값(Argument)이 매개변수에 복사되고, 실행 후 결과를 반환한다.
public static int call(String name, int age) { ... }
call("Kim", 26); // "Kim", 26 → 인수 / name, age → 매개변수
메서드 실행 후 결과를 반환하려면 return문을 사용한다.
public static boolean isOdd(int number) {
if (number % 2 == 1) {
return true;
} else {
return false;
}
}
return을 만나면 메서드는 즉시 종료된다. void를 사용한다. public static void printHeader() {
System.out.println("= 프로그램 시작 =");
}
Java는 항상 값을 복사해서 전달한다.
public static void main(String[] args) {
int num1 = 5;
changeNumber(num1);
System.out.println("호출 후 num1: " + num1); // 5
}
public static void changeNumber(int num2) {
num2 = num2 * 2;
}
num1의 값 5가 복사되어 num2에 들어간다.
따라서 num2를 바꿔도 num1에는 영향을 주지 않는다.
값을 바꾸려면 반환값을 받아야 한다.
num1 = changeNumber(num1);
메서드를 호출할 때, 매개변수 타입과 인수 타입이 다르면 형변환이 필요하다.
public static void printNumber(int number) {
System.out.println("정수 출력: " + number);
}
public static void main(String[] args) {
double d = 1.5;
printNumber((int) d); // double → int 강제 변환
}
출력:
정수 출력: 1
public static void printNumber(double number) {
System.out.println("실수 출력: " + number);
}
public static void main(String[] args) {
int n = 100;
printNumber(n); // int → double 자동 변환
}
출력:
실수 출력: 100.0
같은 이름의 메서드를 매개변수 타입이나 개수로 구분할 수 있다.
int add(int a, int b)
int add(int a, int b, int c)
double add(double a, double b)
메서드 구분을 시그니처(Signature: 이름 + 매개변수 타입/순서)라 한다.