끝나지 않는 프로그래밍 일기


1. 메소드(Method)


메소드에 대해 본격적으로 들어가기 전, 메소드가 무엇인지 간략하게나마 설명을 드리도록 하겠습니다.


메소드(Method)는 C언어의 함수(Function)와 동일한 기능을 합니다. C언어의 함수에서 반환되는 값의 자료형, 함수 이름, 매개변수(Parameter)등을 이미 알고계시는 분들도 있을겁니다. 프로그래밍을 처음 접하시는 분들이라면, 함수(Function)가 무엇인지, 매개변수(Parameter)가 무엇인지, 반환(return)되는 값의 자료형이 뭔지 궁금증을 품는게 정상입니다. 간략히 말하자면 여기서의 함수(Function)란 어떤 행위들을 묶어놓은 것을 말합니다.


우린 메소드가 뭔지 모르지만, 예제를 진행하면서 이미 하나의 메소드를 본적이 있습니다. 바로 프로그램의 진입점(Entry Point)으로 프로그램에서 아주 중요한 역할을 담당하는 main 메소드입니다. 우리가 처음 자바를 배울때 보았던 예제를 아래에 써두었습니다.


class JavaTutorial1

{

public static void main(String[] args)

{

System.out.println("Hello, world!");

}

}


위의 예제에서 main 메소드를 한번 살펴봅시다.

(우선 아직은 public(접근자), static(지정어)를 몰라도 되므로 추후에 자세히 설명하려 합니다.)


void가 뭐길래 main 앞에 써두는건가요? 이 void는 "해당 메소드는 값을 반환하지 않습니다."라는 의미를 지니고 있습니다. 즉, 반환(return)되는 값의 자료형이라고 생각하시면 됩니다. void 옆의 main은 당연히 메소드의 이름이고, 옆에 괄호안에 "String[] args"는 매개변수(Parameter)라고 합니다. 메소드 호출시 같이 넘어오는 값이라고 기억합시다. 이제, 우리가 직접 메소드를 정의해봅시다. (메소드를 정의하는 것이란 메소드를 만드는것과 같습니다.)


아래의 예제는 두개의 매개변수를 받아, 서로 더한 후 출력시키는 메소드입니다.

...

public static void add(int a, int b) {

System.out.println(a + b);

}

...


이 메소드를 어떻게 사용하냐구요? 아래의 예제를 보시면 한번에 이해하실 수 있습니다.

class AddMethod

{

public static void main(String[] args)

{

add(500, 4000);

add(600, 700);

}


public static void add(int a, int b) {

System.out.println(a + b);

}

}


결과:

4500

1300


코드로 돌아가, 5~6행에 add란 메소드가 사용되었고 9~11행에서 add란 메소드가 정의된것을 확인하실 수 있습니다. 5~6행에서 정수 500, 4000와 600, 700을 add 메소드에 넘겨주어 그 값을 더한 결과를 출력하고 있습니다.


먼저, 5행에서 정수 500과 4000을 add 메소드에 넘겨주었습니다. 그런 뒤에 500은 정수형 매개변수 a에 값이 저장되고, 4000은 정수형 매개변수 b에 값이 저장됩니다. 그런 뒤에 a와 b를 서로 더한후 출력시킵니다. add 메소드의 매개변수가 두개임을 확인함으로써 매개변수는 콤마를 구분으로 두개 이상이 올수 있다는 것을 알 수 있습니다. 그리고 6행을 보면 메소드는 여러번 쓰일수 있다는것도 알 수 있습니다. 간단하죠?


이제, 앞서 배울 return 키워드를 사용해 add 메소드를 수정해볼까요?


2. 반환(return)


우리가 방금 전달해준 값이 매개변수에 저장되어 메소드 안으로 들어왔죠? 반대로 메소드가 값을 내보낼 수 있습니다. 메소드에서 값을 호출한 영역으로 내보내는 것을 반환(return)이라고 합니다. 여기서 return의 뜻이 뭘까요? 말그대로 '돌려주다, 돌려보내다'라는 의미를 가지고 있습니다. 메소드안에 존재하는 값을 호출한 영역으로 돌려주는 것과 같습니다. 반환에 대한 이해를 돕기 위해 아래의 예제를 작성해두었습니다. 


class AddMethod

{

public static void main(String[] args)

{

System.out.println(add(500, 4000));

}


public static int add(int a, int b) {

return a+b;

}

}


결과:

4500


코드로 돌아가서, 5행으로 보시면 add 메소드가 괄호 안에서 쓰였습니다. 그리고 add 메소드를 보시면, 매개변수에 저장된 두 값을 더해서 출력하는게 아닌, 값을 반환하고 있습니다. 순서대로 정리해보면, 정수 500과 4000이 add 메소드의 매개변수 a, b에 각각 저장되어 a와 b를 더한 값을 호출 영역으로 되돌려줍니다. 즉 500과 4000을 더한 값 4500이 호출 영역으로 반환되어 add(500, 4000)은 4500으로 대체되어 4500이 출력됩니다. 그리고 나서 메소드가 종료됩니다. return 키워드는 값을 반환 후 인접한 메소드를 종료시킨다고 생각하시면 됩니다. 반환되는 값 4500은 정수형이므로 void가 아닌 int로 적어주어야 합니다. 만약 반환되는 값이 실수라면 double형을 사용하면 되겠죠?


이번 강좌에서 메소드(Method)와 반환(return)을 알아보았습니다. 다음 강좌에서는 클래스(Class)가 등장합니다.