Java 대상 프로그래밍에서의 사용 설명

하나의 자바 방법은 어떤 조작을 실행하기 위한 일부 문장의 조합이다.예를 들어 당신이 시스템을 호출할 때.out.println 방법을 사용할 때, 시스템은 실제로 많은 문장을 실행해야만 컨트롤러에서 정보를 출력할 수 있다.
이제 당신은 어떻게 당신의 방법을 만드는지 배울 것입니다. 그들은 되돌아오는 값도 있고 되돌아오는 값도 없고 파라미터도 있고 파라미터도 없습니다. 다시 불러오는 방법은 같은 방법의 이름을 사용하고 프로그램 설계에서 추상적인 방법을 이용해야 합니다.
작성 방법
우리는 아래의 예로 방법의 문법을 설명한다.

public static int funcName(int a, int b) {
 // body
}
여기 있다
  • public static: 수식자
  • int: 반환값 유형
  • funcName: 함수 이름
  • a,b:형식 매개 변수
  • int a, int b: 매개 변수 열
  • 방법도 과정이나 함수를 포함한다.
  • 과정: 그들은 값을 반환하지 않는다
  • 함수: 그들은 값을 되돌려줍니다
  • 방법의 정의는 방법 헤더와 방법체를 포함한다.다음과 같습니다.
    
    modifier returnType nameOfMethod (Parameter List) {
     // method body
    }
    
    이상의 문법은
  • modifier: 그는 방법의 접근 유형을 정의했다. 이것은 선택할 수 있는 것이다
  • returnType: 방법은 값을 되돌릴 수 있습니다..
  • name OfMethod: 메서드의 이름입니다.메소드 서명에는 메소드 이름과 매개변수 목록이 포함됩니다
  • Parameter List: 매개 변수 목록입니다. 매개 변수의 순서, 유형, 그리고 매개 변수 개수의 집합입니다.이것들은 모두 선택할 수 있는 것이다. 물론 방법도 매개 변수가 없을 수 있다
  • 방법체: 방법체는 이 방법이 무엇에 쓰이는지 정의했다..
  • 예제
    이것은 위에서 정의한 방법max()입니다. 이 방법은 두 개의 매개 변수num1과num2를 받아들여 둘 사이의 최대 값을 되돌려줍니다.
    
    /** the snippet returns the minimum between two numbers */
    public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
       min = n2;
      else
       min = n1;
    
      return min; 
    }
    
    
    방법 호출
    방법을 사용하려면 이 방법은 반드시 호출되어야 한다.방법 호출에는 두 가지 방식이 있는데, 하나는 되돌아오는 값이 있고, 하나는 되돌아오는 값이 없는 것이다.
    호출 방법은 매우 간단하다. 프로그램이 하나의 방법을 호출해야 할 때 제어 프로그램이 호출된 방법으로 이동하면 방법은 두 가지 조건을 호출자에게 되돌려준다.
  • 실행 문장을 되돌려줍니다
  • 방법이 끝날 때까지 실행합니다
  • void를 되돌려주는 방법을 호출 문장으로 삼아 다음 예를 보겠습니다.
    
    System.out.println("wiki.jikexueyuan.com!");
    
    이 메서드의 반환 값은 다음 예에서 이해할 수 있습니다.
    
    int result = sum(6, 9);
    
    예제
    다음 예에서는 방법을 정의하는 방법과 호출하는 방법을 보여 줍니다.
    
    public class ExampleMinNumber{
    
      public static void main(String[] args) {
       int a = 11;
       int b = 6;
       int c = minFunction(a, b);
       System.out.println("Minimum Value = " + c);
      }
    
      /** returns the minimum of two numbers */
      public static int minFunction(int n1, int n2) {
       int min;
       if (n1 > n2)
         min = n2;
       else
         min = n1;
    
       return min; 
      }
    }
    
    
    다음과 같은 결과가 나타날 것이다
    
    Minimum value = 6
    
    키워드void
    키워드void는 되돌아오는 값이 없는 방법을 만들 수 있도록 합니다.다음 예에서 void 메서드 rankPoints를 만듭니다.이 방법은 반환 값 형식이 없습니다.void 메서드를 호출하려면 methodRankPoints(255.7)를 선언해야 합니다.Java 문은 다음과 같이 세미콜론으로 끝납니다.
    
    public class ExampleVoid {
    
      public static void main(String[] args) {
       methodRankPoints(255.7);
      }
    
      public static void methodRankPoints(double points) {
       if (points >= 202.5) {
         System.out.println("Rank:A1");
       }
       else if (points >= 122.4) {
         System.out.println("Rank:A2");
       }
       else {
         System.out.println("Rank:A3");
       }
      }
    }
    
    
    그러면 다음과 같은 결과가 발생합니다.
    
    Rank:A1
    
    값을 통해 매개 변수를 전달하다
    함수를 호출할 때 매개 변수는 반드시 전달되어야 한다.그리고 그들의 순서는 그들이 만들 때의 매개 변수 순서와 같아야 한다.매개 변수는 값이나 인용을 통해 전달할 수 있다.
    값을 통해 매개 변수를 전달하는 것은 호출 방법의 매개 변수를 의미하고 매개 변수 값을 통해 매개 변수를 전달한다.
    예제
    다음 프로그램은 값을 통해 파라미터를 전달하는 예를 보여 줍니다.호출 방법 후 매개 변수 값은 변하지 않습니다.
    
    public class swappingExample {
    
      public static void main(String[] args) {
       int a = 30;
       int b = 45;
    
       System.out.println("Before swapping, a = " +
                 a + " and b = " + b);
    
       // Invoke the swap method
       swapFunction(a, b);
       System.out.println("
    **Now, Before and After swapping values will be same here**:"); System.out.println("After swapping, a = " + a + " and b is " + b); } public static void swapFunction(int a, int b) { System.out.println("Before swapping(Inside), a = " + a + " b = " + b); // Swap n1 with n2 int c = a; a = b; b = c; System.out.println("After swapping(Inside), a = " + a + " b = " + b); } }
    그러면 다음과 같은 결과가 발생합니다.
    
    Before swapping, a = 30 and b = 45
    Before swapping(Inside), a = 30 b = 45
    After swapping(Inside), a = 45 b = 30
    
    **Now, Before and After swapping values will be same here**:
    After swapping, a = 30 and b is 45
    
    
    방법의 재부팅
    한 방법에 두 가지 이상의 방법이 있다면 그들의 이름은 같지만 매개 변수가 같지 않으면 방법의 재부팅이라고 한다.덮어쓰기와는 다릅니다.덮어쓰기는 방법이 같은 이름, 유형, 파라미터를 가진 개수를 가리킨다.
    이전의 최소 정형수의 예를 생각해 봅시다.만약 우리가 부동점형에서 가장 작은 수를 찾으라고 요구할 때, 우리는 방법의 재부팅을 이용하여 함수 이름이 같지만, 매개 변수가 다른 두 가지 이상의 방법을 만들어야 한다.
    다음 예제에서는 다음과 같이 설명합니다.
    
    public class ExampleOverloading{
    
      public static void main(String[] args) {
       int a = 11;
       int b = 6;
       double c = 7.3;
       double d = 9.4;
       int result1 = minFunction(a, b);
       // same function name with different parameters
       double result2 = minFunction(c, d);
       System.out.println("Minimum Value = " + result1);
       System.out.println("Minimum Value = " + result2);
      }
    
     // for integer
      public static int minFunction(int n1, int n2) {
       int min;
       if (n1 > n2)
         min = n2;
       else
         min = n1;
    
       return min; 
      }
      // for double
      public static double minFunction(double n1, double n2) {
       double min;
       if (n1 > n2)
         min = n2;
       else
         min = n1;
    
       return min; 
      }
    }
    
    
    그러면 다음과 같은 결과가 발생합니다.
    
    Minimum Value = 6
    Minimum Value = 7.3
    
    다시 불러오는 방법은 프로그램을 쉽게 읽을 수 있게 한다.여기서 두 가지 방법은 이름은 같지만 매개 변수는 다르다.프로그램 실행 결과로 정형과 부동점 유형의 최소수를 생성합니다.
    명령행 매개변수 사용
    때때로 프로그램이 실행되기 전에 매개 변수를 전달하려고 합니다.이것은main 함수에 명령행 파라미터를 전달함으로써 실현할 수 있다.
    명령줄에서 프로그램 파일을 실행할 때, 명령줄 매개 변수는 파일 이름 뒤에 나타납니다.명령줄 매개변수를 적용하는 것은 Java 프로그램에서 매우 쉽습니다.그것들은main 함수 문자 그룹에 전달됩니다.
    예제
    다음 예제에서는 모든 명령행 매개변수를 내보내는 프로그램을 보여 줍니다.
    
    public class CommandLine {
    
      public static void main(String args[]){ 
       for(int i=0; i<args.length; i++){
         System.out.println("args[" + i + "]: " +
                          args[i]);
       }
      }
    }
    
    
    다음 방법으로 프로그램을 실행합니다.
    
    java CommandLine this is a command line 200 -100
    
    그러면 다음과 같은 결과가 발생합니다.
    
    args[0]: this
    args[1]: is
    args[2]: a
    args[3]: command
    args[4]: line
    args[5]: 200
    args[6]: -100
    
    구조 함수
    이것은 구조 함수를 간단하게 사용하는 예이다.
    
    // A simple constructor.
    class MyClass {
      int x;
    
      // Following is the constructor
      MyClass() {
       x = 10;
      }
    }
    
    
    다음 방법으로 구조 함수를 호출하여 객체를 인스턴스화할 수 있습니다.
    
    public class ConsDemo {
    
      public static void main(String args[]) {
       MyClass t1 = new MyClass();
       MyClass t2 = new MyClass();
       System.out.println(t1.x + " " + t2.x);
      }
    }
    
    
    보통 구조 함수로 하나 이상의 매개 변수를 받아들여야 한다.파라미터의 전달은 상기에서 소개한 일반적인 방법의 파라미터 전달과 같다. 바로 구조 함수의 이름 뒤에 파라미터 목록을 열거하는 것이다.
    예제
    이것은 구조 함수를 간단하게 사용하는 예이다.
    
    // A simple constructor.
    class MyClass {
      int x;
    
      // Following is the constructor
      MyClass(int i ) {
       x = i;
      }
    }
    
    
    다음 방법으로 구조 함수를 호출하여 객체를 인스턴스화할 수 있습니다.
    
    public class ConsDemo {
    
      public static void main(String args[]) {
       MyClass t1 = new MyClass( 10 );
       MyClass t2 = new MyClass( 20 );
       System.out.println(t1.x + " " + t2.x);
      }
    }
    
    
    그러면 다음과 같은 결과가 발생합니다.
    
    10 20
    
    가변 길이 매개변수
    JDK1.5는 가변 길이의 같은 종류의 매개 변수를 전달할 수 있습니다.다음과 같은 방법으로 선언합니다.
    
    typeName... parameterName
    
    방법 설명을 할 때, 생략 번호 앞에서 매개 변수의 유형을 명확하게 해야 하며, 변수 길이만 있을 수 있고, 변수 길이는 모든 매개 변수의 마지막이어야 한다.
    예제
    
    public class VarargsDemo {
    
      public static void main(String args[]) {
       // Call method with variable args 
       printMax(34, 3, 3, 2, 56.5);
       printMax(new double[]{1, 2, 3});
      }
    
      public static void printMax( double... numbers) {
      if (numbers.length == 0) {
       System.out.println("No argument passed");
       return;
      }
    
      double result = numbers[0];
    
      for (int i = 1; i < numbers.length; i++)
       if (numbers[i] > result)
       result = numbers[i];
       System.out.println("The max value is " + result);
      }
    }
    
    
    그러면 다음과 같은 결과가 발생합니다.
    
    The max value is 56.5
    The max value is 3.0
    
    finalize () 방법
    쓰레기 수집기에 폐기되기 전에만 호출되는 방법을 정의할 수 있다.이 방법은finalize () 방법이라고 하는데, 대상이 깨끗하게 제거되었는지 확인하는 데도 사용할 수 있다.
    예를 들어, 대상에게 열려 있는 파일이 닫혔는지 확인하기 위해finalize () 를 사용할 수도 있습니다.
    클래스에 종결자를 추가하기 위해서는finalize () 방법을 정의하기만 하면 됩니다.Java가 클래스의 객체를 회수할 때 이 메서드가 호출됩니다.
    finalize () 방법에서, 대상을 없애기 전에 해야 할 행동을 지정합니다.
    finalize () 방법은 일반적으로 다음과 같습니다.
    
    protected void finalize( )
    {
      // finalization code here
    }
    
    여기서 키워드protected는 클래스 밖의 코드가finalize () 방법에 접근할 수 없도록 하기 위한 것입니다.
    이것은finalize () 가 언제 실행될지 알 수 없다는 것을 의미한다.예를 들어 프로그램이 쓰레기 수집기가 발생하기 전에 끝나면finalize () 방법은 실행되지 않습니다.
    범용 방법:
    java 범용 방법은 방법 반환값이 용기류의 대상일 때 광범위하게 사용된다.
    
    public static List<T> find(Class<T> clazz,String userId){
       ....
    }
    
    일반적으로 자바 범주형 방법을 작성할 때 반환값 유형과 적어도 하나의 매개 변수 유형은 범주형이어야 하고 유형은 일치해야 한다. 만약에 반환값 유형이나 매개 변수 유형 중 하나만 범주형을 사용했다면 이 범주형 방법의 사용은 크게 제한되었고 기본은 범주형을 사용하지 않는 것과 같은 수준으로 제한되었다.
    다음은 두 가지 매우 비슷한 자바 범용 방법의 사용과 그 차이점을 소개한다.
    첫 번째:
    
      public static <T extends CommonService> T getService(Class<T> clazz) {
        T service = (T) serviceMap.get(clazz.getName());
        if (service == null) {
          service = (T) ServiceLocator.getService(clazz.getName());
          serviceMap.put(clazz.getName(), service);
        }
        return service;
      }
    
    두 번째:
    
      public static <T> T getService(Class<? extends CommonService> clazz) {
        T service = (T) serviceMap.get(clazz.getName());
        if (service == null) {
          service = (T) ServiceLocator.getService(clazz.getName());
          serviceMap.put(clazz.getName(), service);
        }
        return service;
      }
    
    다음은 범용 방법의 유형입니다.
    
    public abstract class CommonService {
      private static HashMap<String, CommonService> serviceMap = new HashMap<String, CommonService>();
      // 
      .
      .
      .
    }
    
    이 두 가지 범용 방법은 방법의 서명만 다르고 방법체는 완전히 같다. 그러면 그것들은 무엇이 다르겠는가?
    우리가 그것들을 사용해 보면 그것들의 차이를 알 수 있다.
    첫 번째 범용 방법에 사용:
    
    public class Main {
      public static void main(String[] args) {
        NoticeService noticeService=CommonService.getService(NoticeService.class);// , 。
        NoticeService noticeService=CommonService.getService(UserService.class);// , 。
        
      }
    }
    
    두 번째 범용 방법에 사용:
    
    public class Main {
      public static void main(String[] args) {
        NoticeService noticeService=CommonService.getService(NoticeService.class);// , , , 。
        NoticeService noticeService=CommonService.getService(UserService.class);// , , , , !
     
      }
    }
    
    이제 이 두 가지 아주 비슷한 범용 방법의 차이를 알겠죠?
  • 첫 번째 범용 방법: 반환값과 매개 변수값의 유형은 일치하므로 사용을 추천합니다
  • 두 번째 범용 방법: 반환 값과 매개 변수 값의 유형이 일치하지 않으니 신중하거나 사용하지 마십시오
  • 좋은 웹페이지 즐겨찾기