본문 바로가기
Work & Study/JAVA (& 혼공자Java)

자바(Java) - 메소드3 (리턴문)

by a.k.a DUKI 2020. 10. 12.
728x90
반응형

리턴(return)문

리턴값이 있는 메소드

메소드 선언에 이런타입이 있는 메소드는 반드시 리턴문을 사용해서 리턴값을 지정해야 한다.

만약 리턴문이 없다면 컴파일 에러가 나고, 리턴문이 실행되면 메소드는 즉시 종료 된다.

 

리턴문의 리턴값은 리턴 타입이거나, 리턴타입으로 변환될 수 있어야 한다.

int plus(int x, int y){
	int result = x + y;
    return result;
}

//리턴 타입이 int인 plus()메소드는 
//리턴 타입이 byte, short, int 상관없다. 자동 타입 변환 되기 때문에
int plus(int x, int y){
	byte result = (byte) (x + y);
    return result;
}

 

리턴값이 없는 메소드

리턴값이 없는 메소드는 리턴 타입으로 void를 사용한다. 그런데 void로 선언된 메소드에서도 return문을 사용할 수 있다.

 

이것은 리턴값을 지정하는 것이 아니라 메소드 실행을 가제 종료 시키는 역할을 한다.

 

void로 선언된 메소드에서 while문 뒤에 실행문이 추가적으로 더 있는 경우, break문을 반드시 사용해야한다. return문은 즉시 메소드를 종료시키기 때문이다.

 

예시1) 리턴문

package sec04.exam01;

public class Car {
	// 필드
	int gas;

	// 생성자

	// 메소드
	//리턴값이 없는 메소드로 매개값을 받아서 gas필드값을 변경함
	void setGas(int gas) {
		this.gas = gas;
	}

	//리턴값이 boolean으로 0이면 false, 0아니면 ture리턴
	boolean isLeftGas() {
		if (gas == 0) {
			System.out.println("gas없음");
			return false;
		}
		System.out.println("gas있음");
		return true;
	}

	//리턴값이 없는 메소드로 gas필드값이 0이면 return문으로 메소드 강제 종료
	void run() {
		while (true) {
			if (gas > 0) {
				System.out.println("달린다. (gas잔량: " + gas + ")");
				gas -= 1;
			} else {
				System.out.println("멈춘다. (gas잔량: " + gas + ")");
				return; // 메소드 실행 종료 (강제 종료)
			}

		}
	}
}
public class CarEx {

	public static void main(String[] args) {
		//Car()메소드 사용 선언
		Car myCar = new Car();
		
		//Car의 setGas()메소드 호출
		myCar.setGas(5);
		
		//Car의 isLeftGas()메소드 호출
		boolean gasState = myCar.isLeftGas();
		if(gasState) {
			System.out.println("출발~");
			myCar.run(); //Car의 run()메소드 호출
		}
		
		//Car의 isLeftGas()메소드 호출
		if(myCar.isLeftGas()) {
			System.out.println("gas 충전이 필요합니다.");
		}else {
			System.out.println("gas 충전해");
		}
	}

}

 

 

 

※용어 정리

  • 리턴문: 메소드 선언부에 리턴 타입이 있으면 리턴값을 지정하기 위해 return문이 반드시 있어야 한다. 리턴 타입이 void라면 return문이 필요없지만, 메소드 실행 종료를 위해 사용 할 수 있다.

 

 

본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
728x90
반응형