본문 바로가기

혼자해보는 공부

[18. 메서드, return, 매개변수]

728x90

메서드란?

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

중복 되는 작업을 메서드로 따로 묶어서 메서드로 사용한다. // 코드가 간결해짐


메서드의 장점
1. 코드의 중복을 줄일 수 있다.
2. 코드의 관리가 쉽다.(수정이 용이하다)
3. 코드를 재사용 할 수 있다.
4. 코드가 간결해져서 이해하기 쉬워진다.


메서드 = 선언부 + 구현부

반환타입 매서드이름 ( 타입 변수명, 타입 변수명, ...)  -> 선언부
{
       // 메서드 호출시 수행될 코드 -> 구현부
}
변수명은 많이 들어갈 수 있지만 출력값은 0개나 1개만 나온다.
여러개의 결과를 받으려면 배열을 이용하거나 객체로 묶어서 줘야함

지역변수(lv) : 메서드 내에 선언된 변수
지역변수는 각 메서드에서만 사용하므로 변수의 이름이 겹쳐도 상관없다.

 

 


 

 

메서드의 호출

메서드이름(값1, 값2, ...); // 메서드의 호출 방법

print99danAll();  //  void print99danAll() 을 호출   -> 값을 줄 필요가 없음

int result = add(3, 5); // int add(int x, int y) 를 호출하고, 결과를 result에 저장  ->  값을 입력해주어야함

메서드의 실행흐름

MaMAth mm = new MyMath();  // 인스턴스의 생성

long value = mm.add(1L, 2L);  // 메서드를 호출한다.

long add(long a, long b) {
long result = a + b;
return result;
}

1. main메서드에서 메서드 add를 호출한다. 인수 1L과 2L이 메서드 add의 매개변수 a,b에 각각 대입된다.

2. 메서드 add의 괄호{ } 안에 있는 문장들이 순서대로 수행된다.

3. 메서드 add의 모든 문장이 실행되거나 return문을 만나면, 호출한 메서드(main메서드)로 되돌아와서 이후 문장들을 실행한다.

끝이 나는게 아니라 mm.add(1L,2L)이 결과값으로 변경되면서 값으로 치환된다. 값을 되돌려주고 난 후 그위치로 다시 되돌아와서 코드가 계속 진행됨.

 

 


 

 

return문

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

반환타입이 void인 경우 return문을 생략가능(나머진 return문을 꼭 작성)


호출 스택(call stack)
스택(stack): 밑이 막힌 상자. 위에 차곡차곡 쌓인다. // 호출스택은 모든 프로그래밍 언어에서 동일 ※중요

메서드 수행에 필요한 메모리가 제공되는 공간
메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제

main메서드가 println을 호출했을때 main메서드는 println메서드가 완료될때까지 스택에 쌓여 대기상태가 된다.


기본형 매개변수 - 변수의 값을 읽기만 할 수 있다.(read only)

참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다. (read & write)

 

 

 

728x90
댓글