메서드 선언과 매개변수, 반환, 오버로딩, 가변인자, 정적 메서드와 스코프를 다룬다.
메서드
메서드는 특정 작업을 수행하는 코드 묶음에 이름을 붙인 것입니다. 같은 코드를 반복해 쓰는 대신 메서드로 만들어 두면, 필요할 때마다 이름으로 호출할 수 있어 코드가 짧고 명확해집니다.
학습 목표
- 메서드를 선언하고 호출하는 방법을 익힌다.
- 매개변수와 반환값의 흐름을 이해한다.
- 메서드 오버로딩과 가변인자를 사용한다.
- 정적 메서드와 변수의 스코프를 구분한다.
메서드 선언과 호출
반환타입 이름(매개변수) 형태로 선언합니다. 반환값이 없으면 void를 씁니다.
public class Main {
static void greet(String name) {
System.out.println(name + "님 환영합니다");
}
static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
greet("홍길동");
int sum = add(3, 5);
System.out.println(sum); // 8
}
}
매개변수와 반환값
매개변수는 메서드에 전달하는 입력값이고, return은 결과를 호출한 곳으로 돌려줍니다.
static double average(int a, int b, int c) {
int total = a + b + c;
return total / 3.0;
}
double avg = average(80, 90, 100);
System.out.println(avg); // 90.0
💡 TIP —
return을 만나면 메서드는 즉시 종료됩니다. 조건에 따라 일찍return하면 불필요한 처리를 건너뛸 수 있습니다.
메서드 오버로딩
이름이 같아도 매개변수의 개수나 타입이 다르면 여러 메서드를 만들 수 있습니다. 이를 오버로딩이라 합니다.
static int add(int a, int b) {
return a + b;
}
static double add(double a, double b) {
return a + b;
}
static int add(int a, int b, int c) {
return a + b + c;
}
호출할 때 전달한 인자에 맞는 메서드가 자동으로 선택됩니다.
가변인자
개수가 정해지지 않은 인자를 받을 때는 ...을 사용합니다. 내부에서는 배열처럼 다룹니다.
static int sumAll(int... numbers) {
int total = 0;
for (int n : numbers) {
total += n;
}
return total;
}
System.out.println(sumAll(1, 2, 3)); // 6
System.out.println(sumAll(10, 20, 30, 40)); // 100
⚠️ 주의 — 가변인자는 매개변수 목록에서 맨 마지막에 한 개만 올 수 있습니다.
정적 메서드와 스코프
static 메서드는 객체를 만들지 않고 클래스 이름으로 바로 호출합니다. 메서드 안에서 선언한 변수는 그 메서드 안에서만 유효하며, 이를 스코프(범위)라고 합니다.
static int square(int x) {
int result = x * x; // result는 이 메서드 안에서만 존재
return result;
}
// result를 메서드 밖에서 사용하려 하면 컴파일 오류
블록({}) 안에서 선언한 변수는 그 블록을 벗어나면 사라집니다.
요약
- 메서드는
반환타입 이름(매개변수)로 선언하며return으로 값을 돌려줍니다. - 반환값이 없으면
void를 사용합니다. - 오버로딩은 같은 이름에 다른 매개변수 구성의 메서드를 만드는 것입니다.
- 가변인자
...는 개수가 유동적인 인자를 받습니다. - 변수의 스코프는 선언된 블록 안으로 한정됩니다.
연습문제
- 두 정수 중 큰 값을 반환하는
max메서드를 작성하세요. - 이름과 나이를 받아 인사 문장을 출력하는
void메서드를 작성하세요. int용과double용multiply메서드를 오버로딩하세요.- 가변인자로 받은 점수들의 평균을 반환하는 메서드를 작성하세요.
힌트 — 큰 값은 삼항 연산자, 평균은 합을 개수로 나눕니다(
numbers.length).
💡 연습문제 풀이
불러오는 중…
댓글 0
“Java” 강좌에 대한 댓글입니다.