return 문
실행 중인 메서드를 종료하고 호출한 곳으로 되돌아간다.
void printGugudan (ing dan) {
if ( !(2 <= dan && dan <= 9) )
return; // dan의 값이 2~9 가 아닌경우, 호출한 곳으로 그냥 되돌아간다.
for (int i=1; i<=9; i++){
System.out.printf("%d * %d = %d%n", dan, i , dan*i);
}
return; // 반환 타입이 void 이므로 생략 가능, 컴파일러가 자동추가
}
반환 타입이 void 가 아닌경우, 반드시 return문 필요
int multiply ( int x, int y) {
int result = x * y;
return result; // 반환 타입이 void가 아니므로 생략 불가
}
int max (int a, int b) {
if ( a>b)
return a; // 에러(: return 문이 없음) 조건식이 참일 때만 실행된다.
}
>> 조건문이 참일때는 return 이 있으나 거짓인 경우에 return문이 없음
그래서 else를 추가해 거짓을 때 실행 하는 것을 넣어주어야함
구구단 메서드 만들어서 출력해보기
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
mm.printGugudan(3); // 구구단 3단을 출력
}
}
class MyMath {
void printGugudan (int dan) {
for (int i=1; i<=9; i++) {
System.out.printf("%d * %d = %d%n",dan, i, dan*i );
}
return; //반환타입이 void이기 때문에 써도, 안써도 상관 X
}
}
2~9 단이 아닌경우에는 출력되지 않도록 설정
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
mm.printGugudan(3); // 구구단 3단을 출력
}
}
class MyMath {
void printGugudan (int dan) {\
if( !(2<=dan && dan <=9)){ // 입력받은 dan값이 2~9가 아니면
return; // 메서드 종료하고 돌아가기
}
for (int i=1; i<=9; i++) {
System.out.printf("%d * %d = %d%n",dan, i, dan*i );
}
return; //반환타입이 void이기 때문에 써도, 안써도 상관 X
}
}
두 값을 받아서 둘 중에 큰 값을 반환하는 메서드 작성
1) return 값을 줬음에도 이슈 발생하는 이유?
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
long result5 = mm.big(5L, 0L);
System.out.println("더 큰 값은(5L, 0L) = " + result5);
}
}
class MyMath {
long big(long a, long b) {
if(a > b) {
return a; // 조건식이 참일때만 실행
}
}
}
Q. long 타입의 반환값을 지정해 줘도 왜 이슈가 발생할까?
>> 조건식이 참일때만 실행하는 문장 하나만 있기 때문에
해결 하기 위한 방법
class Ex6_4 {
public static void main(String args[]) {
MyMath mm = new MyMath();
long result5 = mm.big(5L, 0L);
System.out.println("더 큰 값은(5L, 0L) = " + result5);
}
}
class MyMath {
long big(long a, long b) {
if(a > b) {
return a; // 조건식이 참일때만 실행
} else{
return b; // 조건식이 거짓일 때 실행
}
}
}
>> esle 를 넣어서 거짓일 때도 값을 반환 시킴
반환값
(반환값 : return 옆에 있는 값)
메서드의 반환값이 void가 아닐때, return 문을 생략할 수 없음
기본적으로 int 와 반환값의 타입이 일치 해야함 (int로 자동형변환 될 수 있음: char, byte, short)
'자바의 정석 - 기초편' 카테고리의 다른 글
기본형 매개변수 (0) | 2022.08.08 |
---|---|
호출 스택 (call stack) - 중요! (0) | 2022.08.05 |
메서드 호출 (0) | 2022.08.04 |
메서드란? / 메서드의 선언부와 구현부 (0) | 2022.08.04 |
선언 위치에 따른 변수의 종류 / 클래스 변수와 인스턴스 변수 (0) | 2022.08.04 |