Java

[Java] 메서드, return문, 반환값

dalooong 2023. 5. 31. 14:39

1. 메서드란 ?

  1. 문장들을 묶어 놓은 것 → 작업 단위로 문장들을 묶어서 이름을 붙인 것이다.
  2. 값(입력)을 받아서 처리하고, 그 결과를 반환(출력)한다.
  3.  

메서드의 장점

  • 코드의 중복을 줄일 수 있다.
  • 코드의 관리가 쉽다.
  • 코드를 재사용 할 수 있다.
  • 코드가 간결해서 이해하기 쉬워진다.

메서드의 작성 방법

  • 반복적으로 수행되는 여러 문장을 메서드로 작성한다.
  • 하나의 메서드는 한가지 기능만 수행하도록 작성한다.
💡 메서드 = 선언부 + 구현부로 이루어진다. 반환할 것이 없을 때에는 void 를 사용한다. ** 여기서 void란 반환할 게 없다는 뜻이다.
**지역변수 (lv) = 매서드 내에 선언된 변수이다. 지역변수는 이름이 겹쳐도 상관 없다.
int add(int x, int y){ //메서드 영역
	int result = x+y;
	return result;
}

int multiply(int x, int y){ //메서드 영역
	int result = x * y;
	return result;
}

지역변수 이름이 int x, int y로 구성이 되어 있지만, 겹치지 않으므로 상관 없다.

메서드 호출 방법

: 메서드 이름 (값1, 값2 … )

메서드의 실행 흐름

  1. 객체 생성(인스턴스 생성)
  2. 메서드 호출 - 메서드의 매개변수에 인수가 각각 대입됨
  3. 메서드의 모든 문장이 끝나거나, return을 만나면 반환됨

 

2. return문

: 현재 실행 중인 메서드를 종료하고 호출 한 곳으로 되돌아 갈 때 사용한다.

반환 타입이 void일 경우 생략 가능, 컴파일러가 자동 추가된다.

반환 타입이 void가 아닐 경우, 반드시 return문 필요하다.

return;
return a;

실습)

public class Return {
    public static void main(String[] args) {
        void printGugudan(int 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이므로 생략 가능, 컴파일러가 자동 추가해줌 
        }
    }
}

실습2)

public class Ex6_4 {
    public static void main(String[] args) {
            MyMath mm = new MyMath();
            long result = mm.max(5,3);
            long result1 = mm.max(5,3);
            long result2 = mm.subtract(5L, 3L);
            long result3 = mm.multiply(5L, 3L);
            double result4 = mm.divide(5L, 3L);
            mm.printGugudan(6); //구구단 ()출력
            System.out.println("구구단 출력");

            System.out.println("max(5L, 3L) = " + result);
            System.out.println("max(5L, 3L) = " + result1);
            System.out.println("subtract(5L, 3L) = " + result2);
            System.out.println("multiply(5L, 3L) = " + result3);
            System.out.println("divide(5L, 3L) = " + result4);
        }
    }

    class MyMath {
    void printGugudan(int 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; //생략가능
    }
        long add(long a, long b) {
            long result = a + b;
            return result;
            //	return a + b; 위의 두줄을 이와 같이 한줄로 간단히 할 수 있다.
        }
        // 두 값을 받아서 둘중에 큰 값을 반환하는 메서드를 작성하시오.
        
        long max(long a, long b){
        if (a>b)
            return a; //조건식이 참일때만 실행
        else 
            return b;
        }

        long subtract(long a, long b) { return a - b; }
        long multiply(long a, long b) { return a * b; }
        double divide(double a, double b) {
            return a / b;
        }
    }

 

반환값

: return문의 반환값으로 주로 변수가 오지만 항상 그런것은 아니다.

숫자값이나 문자, 문자열값이 올 수 도 있고, 계산식이나 논리식이 올 수 도 있다.

계산식이나 논리식이 올 경우 그 식을 반환하는 것이 아닌 계산된 결과를 반환한다.

반환값은 타입이 일치해야 값들이 반환 가능하다.

int result = x+y;
return result;

------------
return x+y; **위에 코드를 이렇게 한줄로 적을 수 있다. 같은 값 출력됨** 

 

 

 

출처 : 자바의정석 - 기초편