Programming Language/Java

[JAVA] 메서드와 return문

BS Kwak 2021. 7. 15. 11:15

메서드란?

메서드란?

코드의 중복을 제거하기 위해서 { 해당 문자들 }을 묶은 것으로, 값을 입력받아 결과를 출력(반환)한다. 

 

※ 메서드 vs 함수

더보기

메서드는 클래스 안에 들어있어야 하는 것

함수는 클래스에 독립적임

 

메서드의 장점?

- 중복 코드 제거

- 관리 용이

- 재사용 가능 

 

참고로, 하나의 메서드하나의 기능만 수행하도록 작성해야 함

 

메서드 = 선언부 + 구현부

반환타입 메서드이름 (타입 변수명, 타입변수명, ...) // 선언부
{												// 구현부
	//코드			  							// 구현부
}												// 구현부
int add(int x,int y){
	int res = x+y;
    return res;
}

 

메서드 호출

메서드 이름(값1, 값2, ...);

위의 형식과 같이 메서드를 호출하는데, return type에 따라 작업 결과를 저장해야 할 경우는 주의해야 함!

 

→ 예시코드

public static void main(String[] args){
	MyMath mm = new MyMath();
    
    //add 메서드 호출
    long res1 = mm.add(5L,3L);
    double res2 = mm.add(5L,3L);
    
    System.out.println("res1 : "+ res1);
    System.out.println("res2 : "+res2);
}

class MyMath{
	long add(long a, long b){
    	long res = a+b;
        return res;
   }
   
   long substract(long a, long b){ return a-b}
   
   //...
}

메서드는 클래스 영역에만 정의를 저장

 

메서드의 실행 흐름

1. 객체 생성(인스턴스 생성)

2. 메서드 호출- 메서드의 매개변수에 인수가 각각 대입됨

3. 메서드의 모든 문장이 끝나거나 return을 만나면 반환

 

return문

return문이란? 

실행 중인 메서드를 종료하고 호출한 곳으로 되돌아가도록 한다. 

return;
return a;

 

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

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

 

참고로, 다음의 경우에 "return문이 없다"는 에러가 발생한다. 

int max(int a,int b){
	if(a>b) return a;
}

Why? 참일경우엔 a를 반환하지만, 거짓일 경우에 어떤 값을 반환해야하는지 없기 때문! 

 

반환값

말 그대로 return되는 값으로, void type이 아닐 때, return 옆에 쓰는 것

반환 type과 반환값의 type이 일치해야 함