[처음부터 다시 하는 JAVA] 메서드 2
처음부터 다시 하는 자바 공부는 인프런의 김영한 강사님의 강의를 참고해서 공부했다.
링크 : https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%9E%90%EB%B0%94-%EC%9E%85%EB%AC%B8
[지금 무료] 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 강의 - 인프런
프로그래밍에 처음 입문하는 분들을 위한 자바 강의입니다. 코드를 따라하면서 손쉽게 자바를 배울 수 있습니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 자바 입문[사진][임베
www.inflearn.com
메서드 정의
메서드는 다음과 같이 정의한다.
public static int add(int a, int b) {
//메서드 본문, 실행 코드
}
제어자 반환타입 메서드이름(매개변수 목록) {
메서드 본문
}
- 제어자(Modifier): public , static 과 같은 부분이다. 제어자는 뒤에서 설명한다. 지금은 항상 public static 키워드를 입력하자.
- 반환 타입(Return Type): 메서드가 실행 된 후 반환하는 데이터의 타입을 지정한다. 메서드가 값을 반환하지 않는 경우, 없다는 뜻의 void 를 사용해야 한다. 예) void print(String str)
- 메서드 이름(Method Name): 메서드의 이름이다. 이 이름은 메서드를 호출하는 데 사용된다.
- 매개변수(Parameter): 입력 값으로, 메서드 내부에서 사용할 수 있는 변수이다. 매개변수는 옵션이다. 입력값이 필요 없는 메서드는 매개변수를 지정하지 않아도 된다. 예) add()
- 메서드 본문(Method Body): 실제 메서드의 코드가 위치한다. 중괄호 {} 사이에 코드를 작성한다.
매개변수가 없거나 반환 타입이 없는 경우
매개변수가 없고, 반환 타입도 없는 메서드를 확인해보자.
public class Method2 {
public static void main(String[] args) {
printHeader();
System.out.println("프로그램이 동작합니다.");
printFooter();
}
public static void printHeader() {
System.out.println("= 프로그램을 시작합니다 =");
return; //void의 경우 생략 가능
}
public static void printFooter() {
System.out.println("= 프로그램을 종료합니다 =");
}
}
printHeader() , printFooter() 메서드는 매개변수가 없고, 반환 타입도 없다.
- 매개변수가 없는 경우
- 선언: public static void printHeader() 와 같이 매개변수를 비워두고 정의하면 된다.
- 호출: printHeader(); 와 같이 인수를 비워두고 호출하면 된다.
- 반환 타입이 없는 경우
- 선언: public static void printHeader() 와 같이 반환 타입을 void 로 정의하면 된다.
- 호출: printHeader(); 와 같이 반환 타입이 없으므로 메서드만 호출하고 반환 값을 받지 않으면 된다.
- String str = printHeader(); 반환 타입이 void 이기 때문에 이렇게 반환 값을 받으면 컴파일 오류가 발생한다.
void와 return 생략
모든 메서드는 항상 return 을 호출해야 한다. 그런데 반환 타입 void 의 경우에는 예외로 printFooter() 와 같이 생략해도 된다. 자바가 반환 타입이 없는 경우에는 return 을 마지막줄에 넣어준다. 참고로 return 을 만나면 해당 메서드는 종료된다.
반환 타입
반환 타입이 있으면 반드시 값을 반환해야 한다.
반환 타입이 있는 메서드는 반드시 return 을 사용해서 값을 반환해야 한다.
(이 부분은 특히 조건문과 함께 사용할 때 주의해야 한다고 하심)
package method;
public class MethodReturn1 {
public static void main(String[] args) {
boolean result = odd(2);
System.out.println(result);
}
public static boolean odd(int i) {
if (i % 2 == 1) {
return true;
}
}
}
이 코드에서 if 조건이 만족할 때는 true 가 반환되지만, 조건을 만족하지 않으면 어떻게 될까?
조건을 만족하지 않은 경우에는 return 문이 실행되지 않는다.
따라서 이 코드를 실행하면 return 문을 누락했다는 다음과 같은 컴파일 오류가 발생한다.
컴파일 오류
java: missing return statement
public static boolean odd(int i) {
if (i % 2 == 1) {
return true;
} else {
return false;
}
if문을 이렇게 수정하면 if 조건을 만족하지 않아도 else를 통해 return문이 실행된다!
return 문을 만나면 그 즉시 해당 메서드를 빠져나간다.
반환 값 무시
반환 타입이 있는 메서드를 호출했는데 만약 반환 값이 필요없다면 사용하지 않아도 된다.
예시1: int sum = add(1,2) //반환된 값을 받아서 sum 에 저장했다.
예시2: add(1,2) //반환된 값을 사용하지 않고 버린다. 여기서는 예시1과 같이 호출 결과를 변수에 담지 않았다.
단순히 메서드만 호출했다.