Page 23 -
P. 23

하모닉 수           public static double H(int N)                               1
                          (조화급수의 합.          {
                          참고: 186페이지)            double sum = 0.0;                                       기초 개념
                                                 for (int i = 1; i < = N; i+ +)
                                                     sum += 1.0 / i;
                                                 return sum;
                                             }



                     메서드의 속성  메서드의 모든 속성을 설명하는 것은 이 책의 범위를 벗어난다. 다음은 꼭 필요한 내
                     용만 간추린 것이다

                       •  인수는 값으로써 전달된다. 인수로 받은 변수는 마치 로컬 변수처럼 마음대로 이용해도 된다.
                         로컬 변수의 변경 결과가 스코프 밖에서 보이지 않듯이, 인수로 받은 변수의 값을 메서드 안에
                         서 바꾸더라도 호출한 측에서는 아무런 영향이 없다. 이 책에서도 인수로 받은 변수의 값을 바
                         꾸는 경우는 거의 없다. 이러한 “값에 의한 전달”은 배열의 경우 에일리어싱(참고: 31페이지)이
                         된다는 것을 의미하기도 한다. 즉 인수가 배열인 경우 메서드 안에서 그 배열, 즉 호출한 측의
                         배열의 항목 값을 바꿀 수도 있다(배열 자체를 바꿀 수는 없다). 예를 들어 Arrays.sort()는 인

                         수로 받은 배열의 내용에 변경을 가한다. 즉 배열의 항목들을 정렬된 상태로 재배치한다.
                       •  메서드의 이름은 오버로딩될 수 있다. 예를 들어 자바의 수학 라이브러리는 모든 기본 숫자 타
                         입들에 대해서 똑같은 Math.abs(), Math.min(), Math.max()를 사용한다. 또 다른 오버로딩의
                         사용 예는 같은 함수에 두 가지 버전을 만드는 경우이다. 하나는 명시적으로 인수를 받고 하나는
                         인수 값에 디폴트 값을 적용하는 식으로 같은 함수에 서로 다른 구현부가 실행되게 할 수 있다.
                       •  메서드는 하나의 리턴 값만 가질 수 있지만 함수 내에 리턴문이 여러 개 있을 수 있다. 자바 메
                         서드는 리턴 값이 하나여야만 하고 그 데이터 타입은 메서드 시그니처에 정의된다. 메서드 안

                         에서 리턴문을 만나면 호출한 위치로 실행 흐름이 되돌려진다. 리턴문은 메서드 안에서 어디든
                         위치할 수 있고 여러 개 있을 수도 있지만 메서드가 실행되었을 때 한 개의 값만 리턴할 수 있
                         다. 그리고 실행 흐름상 처음 만나는 리턴문이 적용된다.
                       •  메서드는 부가 효과만 일으키고 아무것도 리턴하지 않을 수도 있다. 리턴 타입 대신 void 키워
                         드를 사용하면 리턴 값이 없음을 나타낸다. void 메서드에서는 명시적인 리턴문이 없어도 된
                         다. 리턴문이 없으면 메서드의 마지막 명령문을 실행한 다음 호출을 한 곳으로 실행 흐름을 되
                         돌린다. void 메서드는 대부분의 경우 부가 효과를 일으키도록 만들어진다(입력 데이터를 받거
                         나, 메시지를 출력하거나, 배열의 항목을 변경하거나, 시스템의 상태를 변경하는 등). 예를 들
                         어 이 책의 예제에서는 static 메서드 main()의 리턴 타입이 void로 선언된다. 왜냐하면 main()

                         의 목적이 메시지를 출력하는 것이기 때문이다. 기술적으로 이야기하면 void 메서드는 수학에
                         서의 함수와는 다르다(Math.random()의 경우 인수는 없지만 리턴 값은 있다).

                     1.2절에서 설명되는 인스턴스 메서드도 이러한 속성들을 공통으로 가지지만 부가 효과에 있어서는
                     근본적으로 다른 환경에 놓인다.



                                                                                              035
   18   19   20   21   22   23   24   25   26   27