본문 바로가기
[JAVA]

[처음부터 다시 하는 JAVA] 메서드 2

by 북방바다코끼리표범 2024. 1. 22.

처음부터 다시 하는 자바 공부는 인프런의 김영한 강사님의 강의를 참고해서 공부했다.

 

링크 : 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과 같이 호출 결과를 변수에 담지 않았다.
단순히 메서드만 호출했다.