실행중인 메서드를 종료하고 호출한 곳으로 되돌아간다.
메서드의 반환타입이
void
인 경우 return문을 생략할 수 있다
➡ 컴파일러가 자동으로 추가해준다
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
mm.gugudan(2);
}
}
class MyMath {
void gugudan(int dan) {
if(!(2<=dan && dan<=9)) // dan이 2와 9사이에 있지 않은 경우
return;
System.out.println("결과 ==> ");
for(int i=1; i<=9; i++) {
System.out.printf("%d * %d = %d%n", dan, i , dan * i);
}
// return; // 반환타입이 void 이기 때문에 생략 가능
}
}
if문에서 조건을 만족하지 못하기 때문에 return문을 만나 메인 메서드로 되돌아간다
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
mm.gugudan(11);
}
}
class MyMath {
void gugudan(int dan) {
if(!(2<=dan && dan<=9)) // dan이 2와 9사이에 있지 않은 경우
return;
System.out.println("결과 ==> ");
for(int i=1; i<=9; i++) {
System.out.printf("%d * %d = %d%n", dan, i , dan * i);
}
// return; // 반환타입이 void 이기 때문에 생략 가능
}
}
반환타입이 void가 아닌 경우, 반드시 return문이 필요하다
이때 메서드의 반환타입과 리턴값의 반환타입은 일치해야하며,
자동형변환(예. char, byte, short ➡ int )이 되는 경우는 반환타입이 일치하지 않아도 된다.
long add(long a, long b) {
return a + b;
}
아래와 같이 if문을 사용하여 메서드를 작성한 경우
long max(long a, long b) {
if(a>b) {
return a;
}
}
메서드가 long type으로 return 해야한다는 에러가 발생한다.
조건문(if-else문) 사용시 조건식이 참인경우, 거짓인 경우
각 결과에 따라 실행될 return문을 지정해주어야 한다.
long max(long a, long b) {
if(a>b) {
return a;
} else {
return b;
}
}