return문
: 현재 실행중인 메서드를 종료하고 호출한 메서드로 되돌아감void printGugudan(int dan) {
for(ont i = 1; i <= 9; i++) {
System.out.printf("%d * %d = %d%n", dan, i, dan*i);
}
return; // 반환타입이 void이므로 생략가능. 컴파일러가 자동추가
}
int multiply(int x, int y) {
int result = x * y;
return result; //반환타입이 void가 아니므로 생략불가
}
🍹 ex) 두 값 중에서 큰 값을 반환하는 메서드
int max(int a, int b) {
if(a > b)
return a; //조건식이 참일 때만 실행. return문 실행되지 않을 수 있음
}
▶결과값 반환되도록 수정(else블럭에 return문 추가)
int max(int a, int b) {
if(a > b)
return a; //조건식이 참일 때 실행
else
return b; //조건식이 거짓일 때 실행
}
int add(int x, int y) {
int result = x + y;
return result;
}
▶ 아래의 코드로 간단히 작성 가능
int add(int x, int y) {
return x + y;
}
▶ return문의 반환값으로 'x+y'라는 수식이 적혀 있지만,
수식이 반환되는 것은 아니고, 수식을 게산한 결과가 반환됨
🍤 예를들어 메서드 diff와 메서드 abs 사용
int diff(int x, int y) {
int result = abs(x-y);
return result;
}
▶수정
int diff(int x, int y) {
return abs(x-y);
}
:diff메서드는 두 개의 정수를 받아 그 차이를 절대값으로 반환함.
아래의 코드 역시 메서드를 반환하는 것이 아니라
메서드 abs를 호출하고, 그 결과를 받아서 반환.
메서드 abs의 반환타입이 메서드 diff의 반환타입과 일치하기 때문에 가능
🍣 간단한 메서드의 경우 조건연산자 사용
int abs(int x) {
if(x>=0) {
return x;
} else {
return -x;
}
}
▶if문 없이 조건연산자 사용하여 수정
int abs(int x) {
return x>=0 ? x : -x;
}
:메서드 abs는 입력받은 정수의 부호를 판단해서 음수일 경우
부호연산자(-)를 사용해서 양수로 반환
호출스택
: 메서드의 작업에 필요한 메모리 공간을 제공🥑 호출스택의 특징