return문, 반환값
return문
- 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아간다.
예를들어 printGugudan이라는 메서드는, 단을 입력하면 해당 단을 출력해주는 메서드다.
만약에, 3단을 출력하고 싶으면, 파라미터에 3을 넣어주면 된다.
그러면, 구구단 3단이 출력된다.
근데 메서드의 if문을 보면, 입력한 값이 2단에서 9단 사이가 아니면,
return을 해서 더이상 작업을 진행하지 않고, 자신을 호출한 곳으로 돌아간다.
즉, 무조건 메서드한테 일을 시키는 것이 아니라,
조건이 맞지 않으면, 작업을 하지않고 return을 사용하여 중단 시킬 수 있다.
원래는 메서드 마지막에 또 return을 써야하는데,
메서드가 작업을 마쳤을 때, 원래 호출한 곳으로 돌아가기 위함이다. 그치만, 매번 써주기 귀찮으므로 보통 생략하는 경우가 많다.
그런데, 이렇게 return문을 생략할 수 있는 경우는, 반환타입이 void일때만 가능하다.
즉, 메소드의 반환타입이 void일 때만, 메서드의 마지막에 메서드로 돌아가는 return문을 생략할 수 있다.
반환타입이 void가 아닌 경우에는 메서드안에 return문이 반드시 필요하다.
이 외에도 조심해야 할 부분이 있다.
위의 두 메서드 중 두번째 메서드의 경우, return문이 없는 에러가 발생한다.
"어? return문 있는거 아닌가?"라고 생각할 수 있겠지만,
return문이 조건식이 참일 때만 실행되기 때문에, 거짓일때는 return문이 없게 된다.
따라서 어떻게 작성해야 하냐면,
참일때와 거짓일때 모두 return문이 있도록 작성해야 한다.
반환값
메서드의 반환타입이 void가 아닐 때는, return문을 생략 할 수 없다.
작업결과로 반환 할 값이 반환값이다.
따라서 return문 옆에 반환 값을 써줘야 하며,
이때 메서드의 반환값타입과 return문 옆에 반환값 타입이 일치해야 한다.(또는 자동형변환 가능한 값도 가능)
ex)int로 자동형변환 되는 것 - char, byte, short등
add메서드를 호출 할 때, 3과 5를 파라미터로 입력하면 x와 y에 각각 3과 5가 대입되며 3+5가 수행되어 8이 반환된다.
이때 리턴값인 8 의 타입은 메서드의 반환타입인 int와 일치해야하며,
위의 코드의 경우, 또 해당 return값의 타입은 return값을 저장 할 변수의 타입과도 일치해야 한다.
메서드를 사용할 때는, 메소드의 타입과, return값의 타입, 그리고 return값을 저장할 변수의 타입이 일치하는지 잘 살펴보자.
'JAVA' 카테고리의 다른 글
기본형매개변수 (0) | 2022.03.26 |
---|---|
호출 스택 (call stack) (0) | 2022.03.26 |
메서드 호출과 메서드의 실행흐름 (0) | 2022.03.25 |
메서드란? 메서드의 선언부와 구현부 (0) | 2022.03.25 |
클래스 변수와 인스턴스 변수 (0) | 2022.03.25 |
댓글
이 글 공유하기
다른 글
-
기본형매개변수
기본형매개변수
2022.03.26 -
호출 스택 (call stack)
호출 스택 (call stack)
2022.03.26 -
메서드 호출과 메서드의 실행흐름
메서드 호출과 메서드의 실행흐름
2022.03.25 -
메서드란? 메서드의 선언부와 구현부
메서드란? 메서드의 선언부와 구현부
2022.03.25