Page 22 -
P. 22

이때 인수들은 해당 인수의 값을 결정하는 표현식이 될 수도 있다. 메서드가 표현식 안에서 호출되면
               메서드 자체가 하나의 값으로써 이용된다. 예를 들어 BinarySearch에서 rank() 메서드를 호출하면
               int 타입 값을 리턴한다. 표현식 안에서 사용되지 않고, 독립된 명령문으로서 세미콜론으로 끝나는
               메서드 호출은 대부분 부가 효과를 위해 이용된다. 예를 들어 BinarySearch의 main() 안에서 호출되
               는 Array.sort()는 시스템 메서드를 호출하여 배열의 항목들을 정렬된 상태로 재배치하는 부가 효과
               를 일으킨다. 메서드가 호출되면 그 인수에 사용된 표현식의 결괏값들이 해당 인수의 변숫값으로 초
               기화된다. return 구문은 메서드를 종료시키고 호출한 측으로 실행 흐름을 되돌린다. 만약 static 메

               서드가 어떤 값을 연산 결과로 돌려주어야 한다면 해당 값이 반드시 return 구문에 지정되어 있어야
               한다(만약 return 값을 가진 static 메서드가 return 없이 메서드의 끝부분까지 도달하면 컴파일러
               오류 메시지를 발생시킨다).


                  표 1-5 전형적인 static 메서드의 구현 예

                         작업                                    구현
                   int 타입 값의 절댓값       public static int abs(int x)
                                       {
                                           if (x < 0) return -x;
                                           else     return x;
                                       }
                  double 타입 값의 절댓값     public static double abs(double x)
                                       {
                                           if (x < 0.0) return -x;
                                           else       return x;
                                       }
                     소수 여부 검사          public static boolean isPrime(int N)
                                       {
                                           if (N < 2) return false;
                                           for (int i = 2; i*i < = N; i+ +)
                                               if (N % i = = 0) return false;
                                           return true;
                                       }

                     제곱근(뉴턴법)          public static double sqrt(double c)
                                       {
                                           if (c < 0.0) return Double.NaN;
                                           double err = 1e-15;
                                           double t = c;
                                           while (Math.abs(t - c/t) > err * t)
                                               t = (c/t + t) / 2.0;
                                           return t;
                                       }

                  직각 삼각형의 빗변 길이        public static double hypotenuse(double a, double b)
                                       {  return Math.sqrt(a*a + b*b); }




               034
   17   18   19   20   21   22   23   24   25   26   27