-
[프로그램 이론] 메서드(method)(2)프로그래밍 이론 2024. 3. 3. 16:21
● 메서드 정의
▶ 메서드 정의
- 메서드는 다음과 같이 정의한다.
public static int add(int a, int b) {
// 메서드 본문, 실행 코드
}
제어자 반환타입 메서드이름(매개변수 목록) {
메서드 본문
}
● 제어자(Modifier) : public, static과 같은 부분이다.
● 반환 타입(Return Type) : 메서드가 실행 된 후 반환하는 데이터의 타입을 지정한다. 메서드가 값을 반환하지 않는
경우, 없다는 뜻으로 void를 사용해야 한다. 예) void print(String str)
● 메서드 이름(Method Name) : 메서드의 이름이다. 이 이름은 메서드를 호출하는 데 사용한다.
● 매개변수(patameter) : 입력 값으로, 메서드 내부에서 사용할 수 있는 변수이다. 매개변수는 옵션이다. 입력값이
필요 없는 메서드는 매개변수를 지정하지 않아도 된다. 예) add()
● 메서드 본문(Method Body) : 실제 메서드의 코드가 위치한다. 중괄호 {} 사이에 코드를 작성한다.
▶ 매개변수가 없거나 반환 타입이 없는 경우
- 매개변수가 없고, 반환 타입도 없는 메서드를 확인해 보자.
- 실행 결과
- printGeader() , printFooter() 메서드는 매개변수가 없고, 반환 타입도 없다.
● 매개변수가 없는 경우
⊙ 선언 : public static void printHeader()와 같이 매개변수를 비워두고 정의하면 된다.
⊙ 호출 : printHeader();와 같이 인수를 비워두고 호출하면 된다.
● 반환 타입이 없는 경우
⊙ 선언 : public static void printHeader()와 같은 반환 타입을 void로 정의하면 된다.
⊙ 호출 : printHeader();와 같이 반환 타입이 없으므로 메서드와 호출하고 반환 값을 받지 않으면 된다.
● String str = printHeader(); 반환 타입이 void이기 때문에 이렇게 반환 값을 받으면 컴파일 오류가 발생한다.
▶ void와 return 생략
- 모든 메서드는 항상 return을 호출해야 한다. 그런데 반환 타입 void의 경우에는 예외로 printFooter()와 같이 생략해도 된다.
자바가 반환 타입이 없는 경우에는 return을 마지막줄에 넣어준다. 참고로 return을 만나면 해당 메서드는 종료된다.
● 반환 타입
▶ 반환 타입이 있으면 반드시 값을 반환해야 한다.
- 반환 타입이 있는 메서드는 반드시 return을 사용해서 값을 반환해야 한다.
- 이 부분은 특히 조건문과 함께 사용할 떄 주의해야 한다.
- 메서드리턴 코드
- 이 코드에서 if 조건이 만족할 때는 true가 반환되지만, 조건을 만족하지 않으면 어떻게 될까? 조건을 만족하지 않은
경우에는 return문이 실행되지 않는다. 따라서 이 코드를 실행하면 return문을 누락했다는 다음과 같은 컴파일 오류가
발생한다.
- 컴파일오류
- 메서드리턴 코드 수정
- 이렇게 수정하면 if 조건을 만족하지 않아도 else를 통해 return문이 실행된다.
▶ return문을 만나면 그 즉시 메서드를 빠져나간다.
- return문을 만나면 그 즉시 해당 메서드를 빠져나간다.
- 다음 로직을 수행하는 메서드를 만들어보자.
● 18살 미만의 경우 : 미성년자는 출입이 불가합니다.
● 18살 이상의 경우 : 입장하세요.
● 18세 미만의 경우 "미성년자는 출입이 불가능합니다."를 출력하고 바로 return문이 수행된다. 따라서 다음 로직을
수행하지 않고, 해당 메서드를 빠져나온다.
● 18세 이상의 경우 "입장하세요"를 출력하고, 메서드가 종료된다. 참고로 반환 타입이 없는 void형이기 때문에
마지막 줄의 return은 생략할 수 있다.
▶ 반환 값 무시
- 반환 타입이 있는 메서드를 호출했는데 만약 반환 값이 필요 없다면 사용하지 않아도 된다.
예시 1) int sum = add(1,2) //반환된 값을 받아서 sum에 저장했다.
예시 2) add(1,2) //반환된 값을 사용하지 않고 버린다. 여기서는 예시 1과 같이 호출 결과를 변수에 담지 않았다. 단순히
메서드만 호출했다.
'프로그래밍 이론' 카테고리의 다른 글
[프로그램 이론] 메서드(method)(1) (0) 2024.03.03 [프로그램 이론]향상된 for문(for each) (0) 2024.02.22 [프로그램 이론]배열(Array)(4) (3) 2024.02.21 [프로그램 이론]배열(Array)(3) (0) 2024.02.21 [프로그램 이론]배열(Array)(2) (0) 2024.02.21