기록장

메소드를 알려줄게 2 본문

개발/JAVA

메소드를 알려줄게 2

HJJJJJ 2022. 5. 14. 16:41
728x90

리턴문에 대해 알아볼거야

 

리턴값이 있는 메소드가 있고 

리턴값이 없는 메소드가 있어

 

일단 리턴 값이 있는 메소드

반드시 리턴문을 지정해야돼 만약 리턴문이 없다? 그러면 에러 나~

리턴문이 실행 되면 메소드는 즉시 종료 돼 

 

return 리턴값; 

 

리턴문의 리턴 값은 리턴 타입이거나

리턴 타입으로 변환이 될 수 있어야해

예를 들어서 int인 plus()메소드에서는 바이트, 쇼츠,인트 값이 되어도 상관없어

바이트랑 쇼츠는 인트로 자동 변환 돼

 

int plus(int x, int y){                  

int result = x + y;

return result;

이건

 

int plus(int x,int y){

byte result = (byte) ( x+y );

return result;

 

이렇게 말이지 


리턴문 이후의 실행문은 결코 실행되지않아

return 이후에 실행 문이 오면  Unreachable code(언리처벌 코드/도달할수없는 코드라는 뜻)

에러가 발생해~ 

 

boolen isLeftGas(){
if(gas==0) {
System.out.println("gas가 없습니다.");
return false;
}
System.out.println("gas가 있습니다.");
return true;
}​

이건 가능해 왜냐면

if문의 조건식이 flase가 되면 정상적으로 두번째가 발생하겠지? 

if문의 조건식이 true가 되면 정상적으로 1이 실행되니까 리턴 페일; 이 실행되어 메소드가 

즉시 실행과 동시에 두번째는 실행되지않으니까~

 


이제는 리턴값이 없는 메소드 void(보이드/공허의)에 대해 알려줄게

 

리턴값이 없는 메소드는 리턴 타입으로 void를 사용해 

근데 보이드가 선언 됐어도 리턴문을 사용 할 수 있어

이 부분은 메소드를 강제 종료 시키는 역할이야~ 

return;

 

package sec02.exam01;

public class Car {
	//필드
	int gas;
	//생성자

	//메소드
	void setGas(int gas ) {
		this.gas = gas;
	}
	
	boolean isLeftGas() {
		if(gas == 0) {
			System.out.println("gas가 없습니다.");
			return false; //false를 리턴
		}
		System.out.println("gas가 있습니다");
		return true; //true를 리턴
	}
	
	void run() {
		while(true) {
			if(gas > 0) {System.out.println("달립니다.(gas잔량:"+gas+")");
			gas -=1;
			} else {
				System.out.println("멈춥니다(gas잔량:"+gas+")");
			return;
			}
		}
	}
}

리턴문

 

 

package sec02.exam01;

public class CarExample {

	public static void main(String[] args) {
		Car myCar = new Car();
		
		myCar.setGas(5); //Car의 setGas() 메소드 호출
		
		boolean gasState = myCar.isLeftGas(); //Car의 isLeftGas()메소드 호출
		if(gasState) {
			System.out.println("출발합니다");
			myCar.run(); //Car의 run() 메소드 호출
		}
		
		if(myCar.isLeftGas()) { //Car의 isLeftGas()메소드 호출
			System.out.println("gas를 주입할 필요가 없습니다");
		}else {
			System.out.println("gas를 주입하세요");
		}
	}
}

 


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

	double avg(int x, int y) {
		double sum = plus(x,y);
		double result = sum /2;
		return result;
	}
	
	void execute() {
		double result = avg(7,10);
		println("실행결과:"+result);
	}
	
	void println(String message) {
		System.out.println(message);
	}
}

객체내부에서 메소드 호출 해봤습니다

public class CalucalatorExample {

	public static void main(String[] args) {
		Calculator myCalc = new Calculator();
		myCalc.execute();
	}

}

 

위에 클래스를 지금 클래스에 호출 해봤음 실행결과는 8.5임

 


클래스 외부에서 메소드 호출 

클래스 외부에서 메소드 호출 

728x90
Comments