본문 바로가기

Java/OOP

[Java | OOP] 6-20~21. return문 / 반환값

📌 학습 목차

20. return문 

21. 반환값

20. return문 

return문 현재 실행 중인 메서드를 종료하고 호출한 메서드로 되돌아 감

•모든 메서드는 반환값 유무와 관계없이 적어도 하나의 return문을 포함해야 함

반환 타입이 void인 경우, 컴파일러가 메서드 마지막에 'return;'을 자동으로 추가해주므로 return문을 생략할 수 있음

   반면 반환 타입이 void가 아닌 경우(반환값이 있는 경우), 메서드 내에 return문이 반드시 포함되어야 함

•메서드 내에 조건식을 포함한 경우, 조건별 return문이 누락되지 않도록 주의해야 함

 

class Example {
    📌 // 1) 반환 타입이 void인 경우
    void method1() {
        System.out.println("abc");
    }
    📌 // 2) 반환 타입이 void가 아닌 경우
    int method2(int x, int y) {
        int result = x + y;
        return result;
    }
}

 

1) 반환 타입이 void인 경우

컴파일러가 메서드 마지막에 'return;'을 자동으로 추가해주므로 return문을 생략함

2) 반환 타입이 void가 아닌 경우

•메서드 반환 타입이 int이므로 메서드 내에 int 타입의 값을 반환하는 return문을 포함함

 

class Example {
    // 1) 조건식이 참인 경우의 return문만 포함한 경우
    int method1(int x, int y) {
        if (x > y) {
            return x;
        }
    }
    
    // 2) 조건식이 모든 경우의 return문을 포함한 경우
    int method2(int x, int y) {
        if (x > y) {
            return x;
        }
        return y;
    }
}

 

1) 조건식이 참인 경우의 return문만 포함한 경우

•'java: missing return statement' 즉, 참인 경우의 return문은 존재하나 참이 아닌 경우의 return문이 존재하지 않아 에러가 발생함

2) 조건식이 모든 경우의 return문을 포함한 경우

•참이 아닌 경우의 return문을 추가해 항상 결괏값이 반환될 수 있도록 변경함

21. 반환값

•메서드 작업의 결괏값인 반환값은 'return + 반환값'의 형태로 return문에 의해 호출한 메서드로 되돌아감

   이때 반환값의 타입과 반환 타입은 서로 일치하거나 자동 형변환이 가능해야 함

•return문의 반환값으로 변수 외에도 수식을 사용할 수 있으며, 이때 return문은 수식의 결괏값을 반환함

 

package chap_06;

class MathExample2 {
    📌 // 1) 반환값이 변수인 경우 / 반환값의 타입과 반환 타입이 서로 다르나, 자동 형변환이 가능한 경우
    double method1(long x, long y) {
        long result = x + y;
        return result;
    }

    📌 // 2) 반환값이 수식인 경우 / 반환값의 타입과 반환 타입이 서로 일치하는 경우
    int method2(int x, int y) {
        return x + y;
    }
}

public class _21_Example {
    public static void main(String[] args) {
        MathExample2 m = new MathExample2();
        System.out.println(m.method1(10L, 20L)); // 30.0
        System.out.println(m.method2(10, 20)); // 30
    }
}

 

1) 반환값이 변수인 경우 / 반환값의 타입과 반환 타입이 서로 다르나, 자동 형변환이 가능한 경우

method1 메서드는 메서드 작업의 결과를 변수 result에 저장해 return문의 반환값으로 사용함

long 타입의 반환값은 메서드의 반환 타입인 double 타입과 서로 다르나,

   컴파일러에 의해 표현 범위가 좁은 long 타입에서 넓은 double 타입으로 자동 형변환이 가능하므로 에러가 발생하지 않음

2) 반환값이 수식인 경우 / 반환값의 타입과 반환 타입이 서로 일치하는 경우

method2 메서드는 메서드 작업 수식을 곧바로 return문의 반환값으로 사용하며, 이때 반환값은 수식의 결괏값을 반환함

반환값의 타입과 메서드의 반환 타입이 int 타입으로 서로 일치함

 


Reference

[남궁성의 정석코딩] Java의 정석 기초편 강의

[도우출판] Java의 정석 기초편 / 기본편