Javaメ゜ッド

最初の数章では、我々は倚くの堎合のSystem.out.printlnに䜿甚し、それは䜕ですか

printlnメ゜ッド方法であり、システムが出お、システムクラスクラスで暙準出力オブゞェクトオブゞェクトです。 この文の䜿甚法メ゜ッドのprintlnシステムクラスシステムの暙準出力オブゞェクトを呌び出すこずです。

だから、それを行うための方法は䜕ですか

Javaメ゜ッドは、䞀緒に機胜を実行する文で蚭定されおいたす。

  • この方法は、問題ステップのクラスを解決するために呜じた組み合わせです
  • クラスたたはオブゞェクトに含たれるメ゜ッド
  • この方法は、プログラムで䜜成した他の堎所で参照されたした

定矩されたメ゜ッド

䞀般的には、次の構文を含む方法の定矩

修饰笊 返回倌类型 方法名 (参数类型 参数名){
    ja.
    方法䜓
    ja.
    return 返回倌;
}

メ゜ッドは、メ゜ッドのヘッダヌずメ゜ッドの本䜓を含みたす。 ここでは、すべおのプロセスの䞀郚です

  • 修食子オプションです修食子、メ゜ッドを呌び出す方法をコンパむラに指瀺したす。 これは、メ゜ッドのアクセスタむプを定矩したす。
  • 戻り倀型メ゜ッドは倀を返すこずがありたす。 returnValueTypeは、メ゜ッドが倀のデヌタ型を返すです。 いく぀かの方法は、所望の䜜甚が、ノヌリタヌン倀を実行したす。 この堎合、returnValueTypeキヌワヌドボむド。
  • メ゜ッド名メ゜ッドの実際の名前。 メ゜ッド名ずパラメヌタリストは、䞀緒にメ゜ッドシグネチャを構成しおいたす。
  • パラメヌタタむププレヌスホルダのようなパラメヌタです。 メ゜ッドが呌び出されるず、倀がパラメヌタに枡されたした。 この倀は、匕数たたは倉数ず呌ばれおいたす。 パラメヌタリストはパラメヌタ法の皮類、順序ずパラメヌタの数です。 パラメヌタはオプションで、この方法は、任意のパラメヌタを含めるこずはできたせん。
  • 方法ボディメ゜ッドは、メ゜ッドの関数を定矩する特定のステヌトメントを含みたす。

以䞋のような

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

あなたは、耇数のパラメヌタを持぀こずができたす。

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

泚いく぀かの他の蚀語の方法ではプロセスや機胜を指したす。 呌び出された関数メ゜ッドの戻り倀のvoid以倖の戻り倀の型、メ゜ッドは、プロセスず呌ばれるボむド型の戻り倀を返したす。

䟋

以䞋の方法は、これら2぀のパラメヌタの最倧倀を返し、2぀のパラメヌタ倀num1ずnum2のが含たれおいたす。

/** 返回䞀䞪敎型变量数据的蟃倧倌 */
public static int max(int num1, int num2) {
   int result;
   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

メ゜ッド呌び出し

Javaは、メ゜ッドの戻り倀が遞択するかどうかに応じお、メ゜ッドを呌び出すための2぀の方法をサポヌトしおいたす。

プログラムは、メ゜ッドを呌び出すず、メ゜ッドを制埡するプログラムが呌び出されたす。 閉じ括匧は、プログラムに制埡を返すずきにずきに呌び出されるメ゜ッドのreturn文が実行たたはメ゜ッドの本䜓たでされおいたす。

メ゜ッドが倀を返した堎合、メ゜ッド呌び出しは、䞀般的に倀ずしお扱われたす。 䟋えば

int larger = max(30, 40);

メ゜ッドの戻り倀がvoidの堎合、メ゜ッド呌び出しがステヌトメントでなければなりたせん。 䟋えば、voidを返すの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

このプログラムは、mainメ゜ッドず最倧のメ゜ッドが含たれおいたす。 メむンJVMの方法はたた、メむンず他の方法がないの違いで、呌び出されたす。

mainメ゜ッドを頭メ゜ッド名がString []型のパラメヌタを持぀ほかに、メむンである、publicおよびstatic修食子ず、戻り型voidの倀が瀺されおいる䟋ず同じです。 匕数が文字列の配列であるこずをString []型。


キヌワヌドのボむド

このセクションでは、宣蚀し、voidメ゜ッドを呌び出す方法に぀いお説明したす。

次の䟋では、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メ゜ッドはvoid型の方法があり、それは倀を返したせん。

voidメ゜ッド呌び出しがステヌトメントでなければなりたせん。 したがっお、文の圢の3行目の呌び出しの䞻芁な方法です。 すべおの文ず同様のようにセミコロンで終了したす。


倀でパラメヌタを枡したす

あなたはパラメヌタを提䟛する必芁がある堎合にメ゜ッドを呌び出しお、あなたが指定した順序に埓っお、パラメヌタリストを提䟛する必芁がありたす。

䟋えば、連続したn回の次のメ゜ッドは、メッセヌゞが出力されたす。

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

䟋

次の䟋では、倀によっお枡された効果を瀺したす。

プログラムは、2぀の倉数を亀換するために䜿甚されるメ゜ッドを䜜成したす。

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

スワップメ゜ッドを呌び出すための2぀のパラメヌタを枡したす。 メ゜ッドが呌び出された埌興味深いこずに、匕数の倀が倉曎されおいたせん。


オヌバヌロヌドされたメ゜ッド

最倧の方法は、唯䞀のデヌタ型intに適甚されたす䞊蚘を䜿甚しおいたす。 あなたは、2぀の浮動小数点デヌタの最倧倀を取埗したい堎合しかし、それを入力

次のコヌドに瀺すように解決策は、同じ名前を持぀他のパラメヌタが異なるメ゜ッドを䜜成するこずです

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

あなたが最倧の方法は、int型のパラメヌタを枡された呌び出した堎合、int匕数の最倧メ゜ッドが呌び出されたす。

double型のパラメヌタを枡す堎合は、二重の経隓の皮類は最倧メ゜ッドが呌び出され、これは、メ゜ッドのオヌバヌロヌドず呌ばれおいたす。

クラスの二぀の方法があるが、異なるパラメヌタリストで、同じ名前を持ちたす。

Javaコンパむラず呌ばれるべき方法を決定するために、メ゜ッドシグネチャに埓っお。

メ゜ッドのオヌバヌロヌドは、プログラムをより読みやすくするこずができたす。 実行の方法は、密接に関連するタスクが同じ名前を䜿甚する必芁がありたす。

オヌバヌロヌドされたメ゜ッドは、異なるパラメヌタリストを持っおいる必芁がありたす。 あなただけの修食子の異なる皮類に基づいお、たたはオヌバヌロヌドメ゜ッドに戻るこずはできたせん。


倉数のスコヌプ

範囲倉数は、倉数が参照できるプログラムの䞀郚です。

メ゜ッド定矩内の倉数はロヌカル倉数ず呌ばれたす。

それを含むブロックの開始から終了たでのロヌカル倉数の宣蚀の有効範囲。

圌らが䜿甚する前にロヌカル倉数を宣蚀する必芁がありたす。

パラメヌタの方法の党範囲をカバヌする方法。 パラメヌタは、実際にはロヌカル倉数です。

forルヌプ文の倉数の初期化郚、サむクルにおけるその圹割の範囲。

しかし、可倉ルヌプ本䜓の文は、ルヌプの最埌たで、それから、その範囲の文です。 それは次のように宣蚀された倉数が含たれおいたす。

あなたは方法で、異なる非ネストされたブロックは、繰り返し同じ名前のロヌカル倉数を宣蚀するこずはできたすが、二回のロヌカル倉数を宣蚀するために、ブロック内にネストするこずはできたせん。

コマンドラむンパラメヌタを䜿甚しお

時にはそれは、メッセヌゞを枡されたずきにプログラムを実行したいです。 これは、達成するために、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

コンストラクタ

時コンストラクタは、オブゞェクトを初期化するために䜿甚される堎合、オブゞェクトが䜜成されたす。 そしおそれは、同じ名前のクラスのコンストラクタにありたすが、コンストラクタは戻り倀はありたせん。

倚くの堎合、クラスのむンスタンス倉数の初期倀にコンストラクタを䜿甚するか、たたは完党なオブゞェクトを䜜成するために、他の必芁な手順を実行したす。

Javaは自動的にすべおのメンバヌがれロに初期化されおいるデフォルトのコンストラクタを提䟛するため、カスタムコンストラクタあるかどうかにかかわらず、すべおのクラスは、コンストラクタを持っおいたす。

あなたがあなた自身のコンストラクタを定矩するず、デフォルトコンストラクタは倱敗したす。

䟋

ここでは、コンストラクタを䜿甚しおの䟋です

// 䞀䞪简单的构造凜数
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

倉数パラメヌタヌ

JDK 1.5のように、Javaサポヌトは、メ゜ッドに可倉パラメヌタの同じタむプを枡したす。

以䞋のずおりである方法の可倉パラメヌタを宣蚀したす。

typeNameja. parameterName

メ゜ッド文では、省略蚘号ja.を远加した埌、パラメヌタの型を指定したした。

この方法は、それが最埌のパラメヌタのメ゜ッドである必芁があり、1぀の倉数のみのパラメヌタを指定するこずができたす。 任意の䞀般的なパラメヌタは、その前に宣蚀する必芁がありたす。

䟋

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( doubleja. 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

メ゜ッドを確定

Javaは、この方法は、回収されたオブゞェクトをクリアするために䜿甚されるファむナラむズ、ず呌ばれ、あなたがオブゞェクトがガベヌゞコレクタのデストラクタリサむクルの前に呌び出されたメ゜ッドを定矩するこずができたす。

たずえば、オブゞェクト開いおいるファむルがクロヌズされるこずを保蚌するためにファむナラむズを䜿甚するこずができたす。

ファむナラむズメ゜ッドでは、オブゞェクトが砎棄されるずきに実行される動䜜を指定する必芁がありたす。

ファむナラむズ䞀般的な圢匏でありたす

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

保護されたキヌワヌドは、そのファむナラむズメ゜ッドはクラスの倖のコヌドを呌び出されるこずはありたせん確実に、修食子です。

もちろん、Javaのガベヌゞコレクションは、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