Latest web development tutorials

Java-Methode

In den ersten Kapiteln, wir verwenden, um System.out.printin oft (), was ist es dann?

println () ist ein Verfahren (Methode), und das System ist die Systemklasse (Klasse), ist aus der Standardausgabe Objekt (Object). Verwendung dieser Aussage ist das System Klasse System-Standardausgabe objekt Methode println () aufzurufen.

Was ist also die Art und Weise, das zu tun?

Java-Methode wird von Anweisungen gesetzt, die zusammen eine Funktion erfüllen.

  • Das Verfahren ist eine geordnete Kombination einer Klasse von Problemen zu lösen Schritt
  • Methoden, die in der Klasse oder ein Objekt
  • Die Methode wurde in dem Programm erstellt wurden, an anderer Stelle verwiesen

Definierte Methoden

Im Allgemeinen ist die Definition eines Verfahrens umfassend die folgende Syntax auf:

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

Das Verfahren umfasst ein Verfahren Kopf und ein Verfahren zum Körper. Hier sind alle Teil eines Prozesses:

  • Modifier: Modifikator, der optional ist, den Compiler zu sagen , wie die Methode aufzurufen. Er definiert den Zugriffstyp des Verfahrens.
  • Rückgabewert Typ: Methode könnte Wert zurückgeben. returnValueType ist eine Methode, um den Datentyp des Werts zurückgibt. Einige Methoden führen die gewünschte Aktion, aber keinen Rückgabewert. In diesem Fall returnValueType Schlüsselwort void.
  • Methodenname: der tatsächliche Name des Verfahrens. Methodenname und Parameterliste bilden zusammen die Methodensignatur.
  • Parameter Typ: Parameter wie ein Platzhalter. Wenn das Verfahren aufgerufen wird, hat der Wert auf den Parameter. Dieser Wert wird als Argument oder Variable genannt. Parameterliste ist die Anzahl der Parametertyp der Methode, die Ordnung und Parameter. Der Parameter ist optional, kann das Verfahren keine Parameter enthalten.
  • Verfahren Körper: Das Verfahren umfasst eine spezifische Aussage über die Funktion des Verfahrens zu definieren.

Wie zum Beispiel:

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

Sie können mehr als einen Parameter haben:

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

Hinweis: In einigen anderen Sprachen Methode auf den Prozess und Funktionen bezieht. Eine nicht-void als Rückgabetyp des Rückgabewert der Funktion Methode aufgerufen; Methode gibt einen Rückgabewert von Hohlraumtyp genannt Prozess.

Beispiele

Das folgende Verfahren enthält zwei Parameter num1 und num2, den Maximalwert dieser beiden Parameter zurückgibt.

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

   return result; 
}

Method Invocation

Java unterstützt zwei Möglichkeiten, um eine Methode aufzurufen, je nachdem, ob der Rückgabewert der Methode auszuwählen.

Wenn das Programm eine Methode aufruft, ein Programm zur Steuerung des Verfahrens wird genannt. Wenn die return-Anweisung des aufgerufenen Methode wird ausgeführt, oder bis der Körper des Verfahrens, wenn der schließenden Klammer Rückkehr Steuerung an das Programm.

Wenn das Verfahren einen Wert zurückgibt, wird der Methodenaufruf im allgemeinen als ein Wert behandelt. Zum Beispiel:

int larger = max(30, 40);

Wenn die Methode Rückgabewert ungültig ist, muss der Aufruf der Methode eine Anweisung sein. Zum Beispiel gibt die Methode println Leere. Der folgende Aufruf ist eine Aussage:

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

Beispiel

Das folgende Beispiel zeigt, wie ein Verfahren zu definieren, und wie man es nennen:

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; 
   }
}

Die obigen Beispiele kompilierten Ergebnisse sind wie folgt:

The maximum between 5 and 2 is 5

Dieses Programm enthält eine Hauptmethode und der Methode der max. Haupt JVM Methode wird aufgerufen, aber auch Haupt und andere Methoden keinen Unterschied.

Kopfhauptverfahren ist das gleiche wie das Beispiel gezeigt, mit Modifikatoren öffentlichen und statisch, der Wert der Rückgabetyp void, Methodenname ist Haupt, zusätzlich mit einem String [] Typ-Parameter. String [], dass das Argument ein Array von Strings.


Schlüsselwort void

In diesem Abschnitt wird erläutert, wie eine void-Methode zu erklären und anzurufen.

Das folgende Beispiel deklariert eine Methode namens printGrade, und nennen es einen bestimmten Punktzahl zu drucken.

Beispiel

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');
      }
   }
}

Die obigen Beispiele kompilierten Ergebnisse sind wie folgt:

C

Hier printGrade Verfahren ist ein Verfahren vom Typ void, macht es keinen Wert zurück.

Ein Hohlraum Methodenaufruf muss eine Erklärung sein. Daher ist es die wichtigste Methode der dritten Zeile ruft in Form der Aussage. Wie jede Anweisung endet mit einem Semikolon dergleichen.


Übergeben von Parametern nach Wert

Rufen Sie eine Methode, wenn Sie die Parameter zur Verfügung stellen müssen, müssen Sie die Parameterliste zur Verfügung stellen nach der Bestellung angegeben.

Zum Beispiel gibt der folgende Methode der kontinuierlichen n-mal eine Nachricht:

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

Beispiel

Das folgende Beispiel verdeutlicht die Wirkung von Wert übergeben.

Das Programm erstellt eine Methode, die verwendet wird, um zwei Variablen auszutauschen.

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);
   }
}

Die obigen Beispiele kompilierten Ergebnisse sind wie folgt:

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

Führen Sie zwei Parameter Swap-Methode aufzurufen. Interessanterweise, nachdem die Methode aufgerufen wird, ist der Wert des Arguments nicht verändert.


Überladene Methoden

Max-Methode verwendet die oben nur den Datentyp int gilt. Aber wenn Sie den Maximalwert von zwei Floating-Point-Daten, die sie geben zu bekommen?

Die Lösung ist ein weiterer Parameter mit dem gleichen Namen, aber eine andere Methode zu schaffen, wie in den folgenden Code dargestellt:

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

Wenn Sie max-Methode aufrufen, wird ein int-Parameter übergeben, max Methode des int-Argument aufgerufen wird;

Wenn Doppeltyp-Parameter übergeben, wird die Art der doppelte Erfahrung Max-Methode genannt, ist diese Methode Überlastung genannt wird;

Dass zwei Methoden einer Klasse den gleichen Namen haben, aber mit unterschiedlichen Parameterliste.

Java-Compiler nach der Methodensignatur, um zu bestimmen, welche Methode aufgerufen werden soll.

Methode Überlastung kann das Programm besser lesbar zu machen. Die Art der Ausführung ist eng verwandte Aufgaben den gleichen Namen verwenden sollten.

Überladene Methoden müssen verschiedene Parameterliste. Sie können nicht nur auf der Grundlage verschiedener Arten von Modifikatoren oder überladene Methoden zurückzukehren.


Variable Scope

Bereichsvariable ist Teil des Programms, wo die Variable verwiesen werden kann.

Variablen, die innerhalb der Methodendefinition sind lokale Variablen genannt.

Rahmen einer lokalen Variablendeklarationen von Anfang an bis zum Ende des Blocks es enthält.

Lokale Variablen müssen deklariert werden, bevor sie verwendet werden können.

Das Verfahren zur Herstellung der gesamten Palette von Parametern Verfahren abdecken. Der Parameter ist eigentlich eine lokale Variable.

Variable Initialisierung Teil der for-Schleife-Anweisung, den Umfang seiner Rolle im Zyklus.

Aber variable Schleifenkörper Aussage ist eine Aussage über deren Umfang von bis zum Ende der Schleife. Es enthält eine Variable deklariert, wie folgt:

Sie können in einer Art und Weise, die verschiedenen nicht verschachtelte Blöcke wiederholt, um eine lokale Variable mit dem gleichen Namen zu erklären, aber man kann nicht zweimal innerhalb des Blocks verschachtelt werden, um lokale Variablen zu deklarieren.

Mit Hilfe der Kommandozeilenparameter

Manchmal möchten Sie ein Programm ausführen, wenn es dann die Nachricht übergeben. Dies hängt davon ab, vorbei Befehlszeilenargumente an die Funktion main () zu erreichen.

Kommandozeilen-Argument wird durch Informationen über die Ausführungszeit nach dem Programmnamen.

Beispiele

Das folgende Programm druckt alle Befehlszeilenargumente:

public class CommandLine {

   public static void main(String args[]){ 
      for(int i=0; i<args.length; i++){
         System.out.println("args[" + i + "]: " +
                                           args[i]);
      }
   }
}

Wie unten gezeigt, führen Sie das Programm:

java CommandLine this is a command line 200 -100

Ergebnisse sind wie folgt:

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

constructor

Wenn ein Objekt erstellt wird, wenn der Konstruktor verwendet wird, um das Objekt zu initialisieren. Und es ist im Konstruktor der Klasse mit dem gleichen Namen, aber der Konstruktor hat keinen Rückgabewert.

Oft verwenden Sie den Konstruktor auf eine Instanz der Klasse variable Anfangswerte oder andere notwendigen Schritte durchführen, um ein komplettes Objekt erstellen.

Unabhängig davon, ob Sie eine benutzerdefinierte Konstruktor sind, werden alle Klassen Konstruktor, weil Java automatisch einen Standardkonstruktor bereitstellt, die alle Mitglieder auf Null initialisiert werden.

Sobald Sie Ihren eigenen Konstruktor definiert haben, wird der Standard-Konstruktor fehlschlagen.

Beispiele

Hier ist ein Beispiel der Konstruktor der Verwendung:

// 一个简单的构造函数
class MyClass {
   int x;
   
   // 以下是构造函数
   MyClass() {
      x = 10;
   }
}

Sie können wie dieser Konstruktor aufrufen, ein Objekt zu initialisieren:

public class ConsDemo {

   public static void main(String args[]) {
      MyClass t1 = new MyClass();
      MyClass t2 = new MyClass();
      System.out.println(t1.x + " " + t2.x);
   }
}

Die meiste Zeit benötigen einen Konstruktor Parameter.

Beispiele

Hier ist ein Beispiel der Konstruktor der Verwendung:

// 一个简单的构造函数
class MyClass {
   int x;
   
   // 以下是构造函数
   MyClass(int i ) {
      x = i;
   }
}

Sie können wie dieser Konstruktor aufrufen, ein Objekt zu initialisieren:

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);
   }
}

Ergebnisse sind wie folgt:

10 20

Variable Parameter

Ab JDK 1.5, vorbei an Java-Unterstützung die gleiche Art von variablen Parametern auf ein Verfahren.

Erklären die variablen Parameter des Verfahrens sind wie folgt:

typeName... parameterName

Bei dem Verfahren Aussage der Parametertyp angegeben, nachdem ein Auslassungszeichen Zugabe von (...).

Ein Verfahren kann nur eine Variable Parameter angeben, muss er der letzte Parameter Methode. Eine etwaige gemeinsame Parameter müssen, bevor sie deklariert werden.

Beispiele

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);
   }
}

Die obigen Beispiele kompilierten Ergebnisse sind wie folgt:

The max value is 56.5
The max value is 3.0

finalisieren () -Methode

Java ermöglicht es Ihnen, eine Methode zu definieren, in dem ein Objekt vor dem Garbage Collector destructor aufgerufen wird (Recycling), diese Methode aufgerufen wird finalize (), die die wiederhergestellten Objekte zu löschen verwendet wird.

Zum Beispiel können Sie die Finalisierung () verwenden, um sicherzustellen, dass ein Objekt offene Datei geschlossen wird.

In finalize () -Methode, müssen Sie die Operation angeben, die ausgeführt werden, wenn das Objekt zerstört wird.

finalisieren () ist das allgemeine Format:

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

Stichwort geschützt ist ein Qualifikationsspiel, es wird sichergestellt, dass finalize () -Methode wird nie den Code außerhalb der Klasse aufgerufen.

Natürlich können Java Garbage Collection automatisch durch die JVM durchgeführt werden. Wenn Sie das Handbuch verwenden, können Sie das obige Verfahren verwenden.

Beispiele

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");  
    }  
}  

Führen Sie den obigen Code, sind die Ausgabeergebnisse wie folgt:

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