hyeya_ 2022. 4. 29. 22:19

[메서드란?]

1. 작업단위로 문장들을 묶어서 이름 붙인 것.

-> 반복되는 문장들을 메서드로 작성

2. (입력)을 받아서 처리하고, 결과를 반환(출력)

3. 하나의 메서드는 한 가지 기능만 수행하도록 작성해야 함. (의미 있는 작업단위로 나눠야 재사용이 용이하기 때문)

4. 메서드는 반드시 클래스 내에 존재해야 함.

 

[메서드 장점]

코드 중복 제거, 코드 관리 용이, 코드 재사용 가능, 코드 간결(이해하기 쉬워 짐)

 

[메서드 = 선언부 + 구현부]

반환 타입(작업결과 출력타입) + 메서드 이름(매개변수목록 : 작업에 필요한 값들(입력)) // 선언부 

메서드 호출 시 수행될 코드 // 구현부

 

*메서드 작업에 필요한 매개변수(입력)0~n개 가능

*출력은 0~1개 가능

// 여러 값을 출력 받고 싶다면 배열을 활용하거나 하나의 객체로 묶어야 함.

// 출력 값이 0인 경우 반환타입은 void

 

*지역변수(lv) : 메서드 영역 내에 선언 된 변수

지역변수는 메서드 안에서만 사용되기 때문에 다른 메서드에 이름이 같은 lv가 있어도 상관없음.

 

[메서드의 호출]

메서드 이름 (1, 2, ….); // 메서드를 호출하는 코드

Print99damAll( );  // void print99danAll( )을 호출

Int result = add(3, 5);  // int add(int x, int y)를 호출하고, 결과를 result에 저장

void & int -> 출력

int x & int y -> 입력

 

*메서드는 클래스 영역에서만 정의 가능

*메서드를 호출 할 때, 작업결과가 없는 (반환타입void) 메서드는 따로 작업결과를 저장할 필요가 없지만, 작업결과가 있는 메서드를 호출할 경우에는 호출한 결과를 저장할 변수가 필요함. (변수가 없어도 됨. 변수가 없으면 호출만 되고 반환된 값을 사용할 수 없을 뿐)

 

[메서드의 실행 흐름]

MyMath mm = new MyMath( ); // 먼저 인스턴스를 생성한다.

 

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

 

long add(long a, long b) {

           long result = a + b;

           return result ;         //return값을 메서드를 호출한 곳으로 반환한다.

}

 

1. 먼저 인스턴스(객체)를 생성한다.

2. main메서드에서 메서드 add를 호출한다.

  -> 인수 1L2L이 메서드 add의 매개변수 a, b에 각각 복사(대입)된다.

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

4. 메서드 add의 모든 문장이 실행되거나 return문을 만나면,

   호출한 메서드(main메서드)로 되돌아와서 이후의 문장들을 실행한다.

  -> a=1, b=2 // a+b = 3 // result = 3

  -> 호출한 메서드로 되돌아와서 long value = 3

  -> 3value에 저장 됨.

 

[return]

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

 

*메서드 마지막에 return문을 반드시 써야한다.

(메서드가 작업을 마친 후 작업결과를 반환해야 하기 때문에)

-> but, 반환타입이 void인 경우 생략이 가능하다.

 

Int max(int a, int b) {

           If(a > b)

                     Return a;        // 에러 조건식이 참일 때만 실행된다. 거짓일때 실행 될 return문이 없어서 에러 }

Int max(int a, int b) {

           If(a > b)

                     Return a;        // 조건식이 참일 때만 실행된다.

           Else

                     Return b;         // 조건식이 거짓일 때 실행된다.}

 

-> 위처럼 조건식을 사용할 경우 true, false 모두 return문을 줘야 한다.