메소드 내용을 개별적으로 정리하고 싶었으나 점프 투 자바 내용이 워낙 나에게 적합했다. copy & paste는 아직 기초가 부족한 나에게 선생님과 같은 역할이라 생각한다.
가끔 프로그래밍을 하다 보면 똑같은 내용을 자신이 반복해서 적고 있는 것을 발견할 때가 있다. 이 때가 바로 메소드가 필요한 때이다. 여러 번 반복해서 사용된다는 것은 언제고 또다시 사용할 만한 가치가 있는 부분이라는 뜻이다. 즉, 이러한 경우 이것을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 리턴값을 돌려준다"라는 식의 메소드를 작성하는 것이 현명한 일일 것이다.
가장 간단하지만 많은 것을 설명해 주는 다음의 메소드를 보자.
intsum(int a, int b) {
return a+b;
}
위 메소드의 의미는 다음과 같이 정의된다.
“sum 메소드는 입력값으로 두개의 값(int 자료형 a, int 자료형 b)을 받으며 리턴값은 두 개의 입력값을 더한 값(int 자료형)이다.”
여기서 return은 메소드의 결과 값을 돌려주는 명령어이다. 직접 위의 메소드를 만들어 보고 사용해 보자.
publicclassSample {
intsum(int a, int b) {
return a + b;
}
publicstaticvoidmain(String[] args) {
int a = 3;
int b = 4;
Sample sample =newSample();
int c = sample.sum(a, b);
System.out.println(c); // 7 출력
}
}
위 코드는 sum메소드에 3, 4 라는 입력값을 전달하여 7이라는 값을 돌려받는 예제이다. 실행해보면 7이라는 값이 출력되는 것을 확인할 수 있다.
Sample 클래스의 main 메소드에서 Sample sample = new Sample()처럼 자기 자신의 객체를 생성했다. 이것은 당연히 가능한 코드이고 작성한 클래스를 단독으로 실행시켜 테스트할 때 자주 사용하는 방법이다.
매개변수(parameter)와 인수(arguments)는 혼용해서 사용되는 헷갈리는 용어이므로 잘 기억해 두자. 매개변수는 메소드에 입력으로 전달된 값을 받는 변수를 의미하고 인수는 메소드를 호출할 때 전달하는 입력값을 의미한다.
publicclassSample {
intsum(int a, int b) { // a, b 는 매개변수
return a+b;
}
publicstaticvoidmain(String[] args) {
Sample sample =newSample();
int c = sample.sum(3, 4); // 3, 4는 인수
System.out.println(c); // 7 출력
}
}
점프 투 자바[같은 의미를 가진 여러 가지 용어들에 주의하자]
프로그래밍을 공부할 때 어려운 부분 중 하나가 용어의 혼용이라고 할 수 있다. 우리는 공부하면서 원서를 보기도 하고 누군가의 번역본을 보기도 하면서 의미는 같지만 표현이 다른 용어를 자주 만나게 된다. 한 예로 입력값을 다른 말로 메소드의 인수, 매개변수 등으로 말하기도 하고 결괏값을 출력값, 반환 값, 돌려주는 값 등으로 말하기도 한다. 이렇듯 많은 용어가 여러 가지 다른 말로 표현되지만 의미는 동일한 경우가 많다. 따라서 이런 용어를 기억해 놓아야 머리가 덜 아플 것이다.
메소드는 들어온 입력값을 가지고 어떤 처리를 하여 적절한 리턴값을 돌려주는 블랙박스와 같다.
입력값 ---> 메소드(블랙박스) ----> 리턴값
메소드에 들어오는 입력값과 리턴값에 대해서 자세히 알아보도록 하자.