Latest web development tutorials

자바 방법

처음 몇 장에서, 우리는 종종에서 System.out.println ()을 사용하여, 그것은 무엇인가?

에 println ()는 방법 (방법)이며, 상기 시스템은 시스템 클래스 (클래스)이다, 아웃 표준 출력 객체 (Object)를된다. 이 문장의 사용은 시스템 클래스 시스템 표준 출력 방법에 println을 개체를 호출하는 것입니다 ().

그래서를 할 수있는 방법은 무엇입니까?

자바 메소드는 함께 기능을 수행 문으로 설정된다.

  • 상기 방법은 문제 단계의 클래스를 해결하기 위해 정렬 조합
  • 방법은 클래스 또는 객체에 포함
  • 이 방법은, 프로그램에서 만들어진 다른 참조 된

정의 방법

일반적으로, 방법의 정의는 다음과 같은 구문을 포함 :

修饰符 返回值类型 方法名 (参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}

이 방법은 방법 헤더와 본체 방법을 포함한다. 여기에 프로세스의 일부입니다 :

  • 수정 : 수정, 선택 사항이며, 어떻게 메서드를 호출하는 컴파일러를 알 수 있습니다. 이 방법의 액세스 타입을 정의한다.
  • 반환 값 형식 : 방법은 값을 반환 할 수 있습니다. returnValueType이 방법은, 값의 데이터 형식을 반환한다. 일부 방법은 원하는 작업, 있지만 반환 값을 수행합니다. 이 경우, returnValueType 키워드 보이드.
  • 방법 이름 : 방법의 실제 이름. 메소드의 이름과 매개 변수 목록은 함께 메소드 서명을 구성한다.
  • 매개 변수 유형 : 자리 표시 자와 같은 매개 변수입니다. 메소드가 호출 될 때, 값은 파라미터로 전달. 이 값은 인자 또는 변수라고한다. 파라미터리스트는 방법, 순서 및 파라미터의 파라미터 타입의 수이다. 매개 변수는 선택 사항입니다,이 방법은 매개 변수를 포함 할 수 없습니다.
  • 방법 바디 : 상기 방법에있어서의 기능을 정의하는 특정 문장을 포함한다.

예를 들면 :

public static int age(int birthday){...}

두 개 이상의 파라미터를 가질 수있다 :

static float interest(float principal, int year){...}

참고 : 다른 언어 방법은 프로세스 및 기능을 의미합니다. 함수 호출 방법의 반환 값의 비 공간 반환형, 방법은 프로세스 불리는 공극 형의 반환 값을 반환한다.

다음 방법은이 두 매개 변수의 최대 값을 반환, 두 개의 매개 변수의 NUM1 및 NUM2이 포함되어 있습니다.

/** 返回两个整型变量数据的较大值 */
public static int max(int num1, int num2) {
   int result;
   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

메소드 호출

자바 메소드의 반환 값은 선택 여부에 따라, 메소드를 호출하는 두 가지 방법을 지원합니다.

프로그램이 메소드를 호출 할 때, 상기 방법을 제어하는 ​​프로그램을 호출한다. 때 호출 된 메소드의 return 문이 실행 또는 방법의 몸까지 때 프로그램에 닫는 괄호 리턴 제어 할 수 있습니다.

이 방법은 값을 반환하는 경우, 메소드 호출은 일반적으로 값으로 처리됩니다. 예를 들면 :

int larger = max(30, 40);

메소드 반환 값이 무효 인 경우, 메서드 호출은 문이어야합니다. 예를 들어, 상기 방법에 println 무효 반환한다. 다음 호는 성명 있습니다 :

System.out.println("Welcome to Java!");

다음의 예는 방법을 정의하는 방법, 그리고 그것을 호출하는 방법을 보여줍니다

public class TestMax {
   /** 主方法 */
   public static void main(String[] args) {
      int i = 5;
      int j = 2;
      int k = max(i, j);
      System.out.println("The maximum between " + i +
                    " and " + j + " is " + k);
   }

   /** 返回两个整数变量较大的值 */
   public static int max(int num1, int num2) {
      int result;
      if (num1 > num2)
         result = num1;
      else
         result = num2;

      return result; 
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

The maximum between 5 and 2 is 5

이 프로그램은 주요 방법 및 최대의 방법이 포함되어 있습니다. 메인 JVM 방법은 또한 주와 다른 방법에 차이점에 호출됩니다.

공공 및 정적 수정과, 주요 방법의 예와 동일하다 머리, 무효 반환 형식의 값은 메소드 이름은 문자열은 [] 형태 파라미터를 가지는 외에, 메인입니다. 문자열 [] 인수가 문자열의 배열입니다.


키워드 무효

이 섹션에서는 선언하고 빈 메소드를 호출하는 방법에 대해 설명합니다.

다음의 예는 printGrade라는 방법을 선언하고 주어진 점수를 인쇄를 호출합니다.

public class TestVoidMethod {

   public static void main(String[] args) {
      printGrade(78.5);
   }

   public static void printGrade(double score) {
      if (score >= 90.0) {
         System.out.println('A');
      }
      else if (score >= 80.0) {
         System.out.println('B');
      }
      else if (score >= 70.0) {
         System.out.println('C');
      }
      else if (score >= 60.0) {
         System.out.println('D');
      }
      else {
         System.out.println('F');
      }
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

C

여기 printGrade 방법은 유형 무효의 방법은, 그것은 값을 반환하지 않습니다.

보이드 메서드 호출은 문이어야합니다. 따라서, 세 번째 행의 주 방법은 문장의 형태로 호출된다. 어떤 문처럼 같은 세미콜론으로 끝납니다.


값으로 매개 변수 전달

당신이 매개 변수를 제공해야하는 경우 메서드를 호출하면 지정된 순서에 따라 매개 변수 목록을 제공해야합니다.

예를 들어, n 회 연속 다음과 같은 방법이 메시지를 출력한다 :

public static void nPrintln(String message, int n) {
  for (int i = 0; i < n; i++)
    System.out.println(message);
}

다음 예는 값으로 전달 효과를 나타낸 것이다.

프로그램은 두 개의 변수를 교환하는 데 사용되는 방법을 생성한다.

public class TestPassByValue {

   public static void main(String[] args) {
      int num1 = 1;
      int num2 = 2;

      System.out.println("Before swap method, num1 is " +
                          num1 + " and num2 is " + num2);

      // 调用swap方法
      swap(num1, num2);
      System.out.println("After swap method, num1 is " +
                         num1 + " and num2 is " + num2);
   }
   /** 交换两个变量的方法 */
   public static void swap(int n1, int n2) {
      System.out.println("\tInside the swap method");
      System.out.println("\t\tBefore swapping n1 is " + n1
                           + " n2 is " + n2);
      // 交换 n1 与 n2的值
      int temp = n1;
      n1 = n2;
      n2 = temp;

      System.out.println("\t\tAfter swapping n1 is " + n1
                           + " n2 is " + n2);
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

Before swap method, num1 is 1 and num2 is 2
        Inside the swap method
                Before swapping n1 is 1 n2 is 2
                After swapping n1 is 2 n2 is 1
After swap method, num1 is 1 and num2 is 2

스왑 메소드를 호출하는 두 개의 매개 변수를 전달합니다. 메서드가 호출 된 후 흥미롭게도, 인수의 값은 변경되지 않았습니다.


오버로드 방법

최대있어서, 상기 전용 int 데이터 형식에 적용 이용한다. 두 개의 최대 값을 얻을 원한다면 부동 소수점 데이터를 입력?

다음의 코드에 도시 ​​된 바와 같이 용액, 이름은 같지만 다른 방법으로 다른 매개 변수를 생성하는 것이다 :

public static double max(double num1, double num2) {
  if (num1 > num2)
    return num1;
  else
    return num2;
}

당신은 최대 방법이있는 int 매개 변수를 전달 호출하면, int 인수의 최대 메서드가 호출됩니다;

두 유형의 파라미터를 전달하는 경우, 두 환경 최대 방법의 유형이 방법은 과부하라고 불린다;

클래스의 두 가지 방법은 같은 이름을 가지고 있지만, 다른 매개 변수 목록.

호출 할 필요가 방식을 결정하는 방법 서명에 따라 자바 컴파일러.

메소드 오버로딩은 프로그램이 더 많은 읽을 수 있습니다. 실행하는 방법은 관련 태스크는 동일한 이름을 사용한다 밀접하다.

오버로드 방법은 서로 다른 매개 변수 목록이 있어야합니다. 당신은 수정의 다른 유형에 따라 또는 오버로드 된 메서드에 반환 할 수 없습니다.


변수 범위

범위 변수는 변수를 참조 할 수있는 프로그램의 일부이다.

메소드 정의 내에서 변수는 지역 변수라고합니다.

를 포함하는 블록이 종료 될 때까지 처음부터 로컬 변수 선언 범위.

이들은 사용하기 전에 로컬 변수 선언되어야한다.

파라미터 방식의 전체 범위를 포함하는 방법. 매개 변수는 실제로는 지역 변수입니다.

루프 문, 사이클에서의 역할의 범위에 대한의 변수 초기화 부분입니다.

그러나 가변 루프 본체 문 루프의 말미에서 그 범위의 문이다. 다음과 같이 선언 변수를 포함 :

당신은 방법으로, 다른 비 중첩 된 블록을 반복해서 같은 이름의 지역 변수를 선언 할 수 있지만 두 번 로컬 변수를 선언 블록 내에서 중첩 될 수 없습니다.

명령 줄 매개 변수를 사용하여

때때로 당신은 다음 메시지를 전달 할 때 프로그램을 실행합니다. 이것은 달성하기 위해 주 () 함수에 명령 줄 인수를 전달에 따라 달라집니다.

명령 줄 인수는 프로그램 이름 뒤에 실행 시간에 대한 정보와 함께 표시됩니다.

다음 프로그램은 모든 명령 줄 인수를 인쇄합니다 :

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

생성자

때 생성자는 객체를 초기화하는 데 사용되는 경우 개체가 생성됩니다. 그리고 같은 이름의 클래스 생성자에 있지만 생성자 리턴 값이 없다.

종종 클래스 인스턴스 변수의 초기 값으로 생성자를 사용하거나 완전한 개체를 만들 기타 필요한 단계를 수행합니다.

사용자 정의 생성자 있는지 여부를 자바가 자동으로 모든 구성원이 0으로 초기화하는 기본 생성자를 제공하기 때문에, 모든 클래스는 생성자가 있습니다.

당신이 당신의 자신의 생성자를 정의하면, 기본 생성자가 실패합니다.

다음은 생성자를 사용하는 예입니다 :

// 一个简单的构造函数
class MyClass {
   int x;
   
   // 以下是构造函数
   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);
   }
}

대부분 생성자 파라미터가 필요하다.

다음은 생성자를 사용하는 예입니다 :

// 一个简单的构造函数
class MyClass {
   int x;
   
   // 以下是构造函数
   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

Variable 매개 변수

JDK 1.5로, 자바 지원 방법에 가변 파라미터의 동일한 유형을 전달.

다음과 같다있어서의 가변 파라미터를 선언

typeName... parameterName

방법 문에,이 줄임표 (...)를 추가 한 후 매개 변수 유형을 지정했습니다.

방법은 하나의 가변 파라미터를 지정할 수있는, 최종 파라미터 방식이어야한다. 모든 일반 매개 변수는 이전에 선언해야합니다.

public class VarargsDemo {

   public static void main(String 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

마무리 () 메소드

자바는이 방법은 복구 된 개체를 취소하는 데 사용되는 마무리 ()를 호출하면 객체가 가비지 컬렉터 소멸자 (재활용) 전에 호출하는 방법을 정의 할 수 있습니다.

예를 들어, 개체 열린 파일이 닫혀 있는지 확인하기 위해 마무리 ()를 사용할 수 있습니다.

마무리 () 메소드에서는 개체가 소멸 될 때 작업을 수행 할 지정해야합니다.

일반적인 형식은 () 마무리 :

protected void finalize()
{
   // 在这里终结代码
}

보호 키워드는 그 마무리 () 메서드는 클래스 외부 코드를 호출되지 않습니다 보장 규정이다.

물론, 자바의 가비지 컬렉션은 JVM에 의해 자동으로 수행 할 수 있습니다. 이 설명서를 사용하는 경우에는 위의 방법을 사용할 수 있습니다.

public class FinalizationDemo {  
    public static void main(String[] args) {  
        Cake c1 = new Cake(1);  
        Cake c2 = new Cake(2);  
        Cake c3 = new Cake(3);  
          
        c2 = c3 = null;  
        System.gc(); //调用Java垃圾收集器
    }  
}  
  
class Cake extends Object {  
    private int id;  
    public Cake(int id) {  
        this.id = id;  
        System.out.println("Cake Object " + id + "is created");  
    }  
      
    protected void finalize() throws java.lang.Throwable {  
        super.finalize();  
        System.out.println("Cake Object " + id + "is disposed");  
    }  
}  

다음과 같이 위의 코드를 실행, 출력 결과는 다음과 같습니다

C:\1>java FinalizationDemo  
Cake Object 1is created  
Cake Object 2is created  
Cake Object 3is created  
Cake Object 3is disposed  
Cake Object 2is disposed