충분히 쌓여가는
메서드(method) 본문
메서드
문장들을 작업단위로 묶어놓은 것
값(입력)을 받아서 처리하고, 결과를 반환(출력)
입력은 n개, 출력은 0~1개
출력이 많을 경우 배열이나 하나의 객체로 묶어야함
클래스 영역에만 정의 가능
메서드의 장점
코드의 중복을 줄일 수 있다
코드의 관리가 쉽다
코드를 재사용할 수 있다
코드가 간결해서 이해하기 쉬워진다
메서드의 작성
반복적으로 수행되는 여러 문장들을 메서드로 작성
하나의 메서드는 한 가지 기능만 수행하도록 작성
반환타입 메서드이름(타입 변수명, 타입 변수명, ...) { // 선언부
// 메서드 호출 시 수행될 코드 // 구현부
}
int add(int a, int b) {
int result = a + b;
return result; // 호출한 메서드로 결과를 반환
}
반환타입이 없는 경우
반환타입으로 void를 적어야 함
void print99danAll() {
for(int i=1;i<=9;i++) {
for(int j=2;j<=9;j++) {
System.out.println(j+"*"+i+"="+(j*i)+" ");
}
System.out.println();
}
}
지역변수(local variable)
메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있으므로 서로 다른 메서드라면 같은 이름의 변수를 선언해도 된다
메서드 add와 메서드 multiply의 각각의 변수 x와 y는 이름만 같고 다른 변수이다
int add(int x, int y) {
int result = x+y;
return result;
}
int multiply(int x, int y) {
int result = x * y;
return result;
}
메서드 호출
괄호()안에 지정해둔 값, 즉 인자(인수)의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 함
반환 타입이 void가 아닌 경우: 메서드가 작업을 수행하고 반환한 값을 대입연산자로 저장하는 것이 보통이지만, 저장하지 않아도 문제가 되지 않는다
메서드이름(값1, 값2, ...); // 메서드를 호출하는 방법
print99danAll(); // void print99danAll() 호출, void 값이므로 작업 결과를 저장하지 않아도됨
int result = add(3, 5); // int add(int x, int y)를 호출하고, 결과를 result에 저장
코드
public class MyMathTest {
public static void main(String[] args) {
MyMath mm = new MyMath();
long result1 = mm.add(5L, 3L);
long result2 = mm.subtract(5L, 3L);
long result3 = mm.multiply(5L, 3L);
double result4 = mm.divide(5L, 3L);
long result5 = mm.max(5, 3);
long result6 = mm.min(5, 3);
mm.max(5, 3); // 그냥 호출만 해도 상관없음, 저장안되고 호출만 됨
System.out.println(result1); // 8
System.out.println(result2); // 2
System.out.println(result3); // 15
System.out.println(result4); // 1.0
System.out.println(result5); // 5
System.out.println(result6); // 3
}
}
class MyMath {
long add(long a, long b) {
long result = a + b;
return result; // return a+b;
}
long subtract(long a, long b) {
return a-b;
}
long multiply(long a, long b) {
return a*b;
}
long divide(long a, long b) {
return a/b;
}
// 둘 중에 큰 값 반환
long max(long a, long b) {
// long result = 0;
// result = a > b ? a : b;
return a > b ? a : b;
}
// 둘 중에 작은 값 반환
long min(long a, long b) {
return a < b ? a : b;
}
}
메서드 실행순서
1. main 메서드에 메서드 add 호출, 호출 시 지정한 5L과 3L이 메서드 add의 매개변수 x와 y에 복사된다
2. 메서드 add의 괄호{} 안에 있는 문장들이 순서대로 실행된다
3. 메서드 add의 모든 문장이 실행되거나 return문을 만나면, 호출한 메서드(main 메서드)로 되돌아와서 이후의 문장들을 실행한다
MyMath mm == new MyMath(); // 인스턴스 생성
long value = mm.add(5L, 3L); // 메서드 호출
long add(long x, long y) {
long result = x+y;
return result;
}
'Java > 객체지향' 카테고리의 다른 글
기본형 매개변수와 참조형 매개변수 (0) | 2023.05.26 |
---|---|
return 문 (void => return 문 생략 가능) (0) | 2023.05.25 |
인스턴스 변수와 클래스 변수 (0) | 2023.05.24 |
선언 위치에 따른 변수의 종류 (0) | 2023.05.23 |
클래스의 정의 (0) | 2023.05.22 |