Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java Methoden meistern: Erstellen, Aufrufen und Abstraktion

Was ist eine Java-Methode?

Eine Java-Methode ist eine Sammlung von Anweisungen, die zusammengefasst werden, um eine Operation auszuführen. Wenn Sie beispielsweise die Methode System.out.println() aufrufen, führt das System tatsächlich mehrere Anweisungen aus, um eine Nachricht auf der Konsole anzuzeigen.

In diesem Kapitel lernen Sie, wie Sie eigene Methoden mit oder ohne Rückgabewerte erstellen, Methoden mit oder ohne Parameter aufrufen und Methodenabstraktion im Programmdesign anwenden.

Methoden erstellen

Betrachten Sie das folgende Beispiel, um die Syntax einer Methode zu erklären:

Syntax

public static int methodName(int a, int b) {
    // method body
}

Hierbei ist:

Eine Methodendefinition besteht aus einem Methodenkopf und einem Methodenrumpf. Die Syntax lautet:

modifier returnType nameOfMethod (Parameter List) {
    // method body
}

Die obige Syntax umfasst:

Beispiel: Minimum zweier Zahlen berechnen

/** Gibt das Minimum zwischen zwei Zahlen zurück */
public static int minFunction(int n1, int n2) {
    int min;
    if (n1 > n2)
        min = n2;
    else
        min = n1;
    return min;
}

Methoden aufrufen

Um eine Methode zu verwenden, muss sie aufgerufen werden. Es gibt zwei Arten, wie eine Methode aufgerufen wird: Die Methode gibt einen Wert zurück oder gibt nichts zurück (kein Rückgabewert, void).

Der Prozess des Methodenaufrufs ist einfach. Wenn ein Programm eine Methode aufruft, wird die Programmsteuerung an die aufgerufene Methode übergeben. Diese gibt die Steuerung an den Aufrufer in zwei Fällen zurück:

Methoden, die void zurückgeben, gelten als Aufruf einer Anweisung. Beispiel:

System.out.println("Dies ist tutorialspoint.com!");

Methoden, die einen Wert zurückgeben, können wie folgt verstanden werden:

int result = sum(6, 9);

Vollständiges Beispiel: Methode definieren und aufrufen

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

    /** Gibt das Minimum von zwei Zahlen zurück */
    public static int minFunction(int n1, int n2) {
        int min;
        if (n1 > n2)
            min = n2;
        else
            min = n1;
        return min;
    }
}

Ausgabe:

Minimum value = 6

Das void-Schlüsselwort

Das Schlüsselwort void ermöglicht es uns, Methoden zu erstellen, die keinen Wert zurückgeben. Im folgenden Beispiel betrachten wir eine void-Methode namens methodRankPoints. Diese Methode gibt keinen Wert zurück. Der Aufruf einer void-Methode muss eine Anweisung sein, z. B. methodRankPoints(255.7);. Es handelt sich um eine Java-Anweisung, die mit einem Semikolon endet.

Beispiel

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

Ausgabe:

Rank:A1

Parameterübergabe nach Wert (Pass by Value)

Beim Aufrufprozess müssen Argumente übergeben werden. Diese müssen in derselben Reihenfolge stehen wie ihre jeweiligen Parameter in der Methodenspezifikation. Parameter können nach Wert oder nach Referenz übergeben werden.

Parameterübergabe nach Wert bedeutet, eine Methode mit einem Parameter aufzurufen. Dabei wird der Argumentwert an den Parameter übergeben.

Beispiel

Das folgende Programm zeigt ein Beispiel für die Parameterübergabe nach Wert. Die Werte der Argumente bleiben gleich, auch nach dem Methodenaufruf.

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);
        // swap-Methode aufrufen
        swapFunction(a, b);
        System.out.println("\n**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);
        // n1 mit n2 vertauschen
        int c = a;
        a = b;
        b = c;
        System.out.println("After swapping(Inside), a = " + a + " b = " + b);
    }
}

Ausgabe:

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

Methodenüberladung (Method Overloading)

Wenn eine Klasse zwei oder mehr Methoden mit demselben Namen, aber unterschiedlichen Parametern hat, spricht man von Methodenüberladung. Dies unterscheidet sich von Überschreiben (Overriding). Beim Überschreiben hat eine Methode denselben Namen, Typ, Anzahl der Parameter usw.

Betrachten wir das vorherige Beispiel zur Ermittlung der Minimalzahl vom Typ int. Angenommen, wir wollen das Minimum vom Typ double finden. Dann wird das Konzept der Überladung eingeführt, um zwei oder mehr Methoden mit demselben Namen, aber unterschiedlichen Parametern zu erstellen.

Beispiel

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); // gleicher Funktionsname, andere Parameter
        double result2 = minFunction(c, d);
        System.out.println("Minimum Value = " + result1);
        System.out.println("Minimum Value = " + result2);
    }

    // für Integer
    public static int minFunction(int n1, int n2) {
        int min;
        if (n1 > n2)
            min = n2;
        else
            min = n1;
        return min;
    }

    // für Double
    public static double minFunction(double n1, double n2) {
        double min;
        if (n1 > n2)
            min = n2;
        else
            min = n1;
        return min;
    }
}

Ausgabe:

Minimum Value = 6
Minimum Value = 7.3

Überladene Methoden machen das Programm lesbarer. Hier werden zwei Methoden mit demselben Namen, aber unterschiedlichen Parametern bereitgestellt. Das Minimum aus Integer- und Double-Typen ist das Ergebnis.

Verwendung von Kommandozeilenargumenten

Manchmal möchte man Informationen in ein Programm übergeben, wenn man es ausführt. Dies geschieht durch die Übergabe von Kommandozeilenargumenten an main().

Ein Kommandozeilenargument ist die Information, die direkt auf den Programmnamen in der Kommandozeile folgt, wenn es ausgeführt wird. Auf die Kommandozeilenargumente innerhalb eines Java-Programms zuzugreifen, ist einfach. Sie werden als Strings im String-Array gespeichert, das an main() übergeben wird.

Beispiel

Das folgende Programm zeigt alle Kommandozeilenargumente an, mit denen es aufgerufen wurde:

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

Führen Sie dieses Programm wie folgt aus:

$ java CommandLine this is a command line 200 -100

Ausgabe:

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

Das this-Schlüsselwort

this ist ein Schlüsselwort in Java, das als Referenz auf das Objekt der aktuellen Klasse innerhalb einer Instanzmethode oder eines Konstruktors verwendet wird. Mit this können Sie auf die Member einer Klasse zugreifen, wie Konstruktoren, Variablen und Methoden.

Hinweis – Das Schlüsselwort this wird nur innerhalb von Instanzmethoden oder Konstruktoren verwendet.

Im Allgemeinen wird das Schlüsselwort this verwendet, um:

class Student {
    int age;
    Student(int age) {
        this.age = age;
    }
}
class Student {
    int age;
    Student() {
        this(20);
    }
    Student(int age) {
        this.age = age;
    }
}

Beispiel: this-Schlüsselwort zur Memberzugriff

public class This_Example {
    // Instanzvariable num
    int num = 10;

    This_Example() {
        System.out.println("This is an example program on keyword this");
    }

    This_Example(int num) {
        // Default-Konstruktor aufrufen
        this();
        // Lokale Variable num der Instanzvariable num zuweisen
        this.num = num;
    }

    public void greet() {
        System.out.println("Hi Welcome to Tutorialspoint");
    }

    public void print() {
        // Lokale Variable num
        int num = 20;
        // Lokale Variable ausgeben
        System.out.println("value of local variable num is : " + num);
        // Instanzvariable ausgeben
        System.out.println("value of instance variable num is : " + this.num);
        // greet-Methode der Klasse aufrufen
        this.greet();
    }

    public static void main(String[] args) {
        // Klasse instanziieren
        This_Example obj1 = new This_Example();
        // print-Methode aufrufen
        obj1.print();
        // Neuen Wert an num-Variable über parametrisierten Konstruktor übergeben
        This_Example obj2 = new This_Example(30);
        // print-Methode erneut aufrufen
        obj2.print();
    }
}

Ausgabe:

This is an example program on keyword this
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint

Variable Arguments (Varargs)

JDK 1.5 ermöglicht es, eine variable Anzahl von Argumenten desselben Typs an eine Methode zu übergeben. Der Parameter in der Methode wird wie folgt deklariert:

typeName... parameterName

In der Methodendeklaration geben Sie den Typ gefolgt von drei Punkten (...) an. In einer Methode darf nur ein variabler Parameter angegeben werden, und dieser Parameter muss der letzte Parameter sein. Reguläre Parameter müssen ihm vorangehen.

Beispiel

public class VarargsDemo {
    public static void main(String args[]) {
        // Methode mit variablen Argumenten aufrufen
        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);
    }
}

Ausgabe:

The max value is 56.5
The max value is 3.0

Die finalize()-Methode

Es ist möglich, eine Methode zu definieren, die kurz vor der endgültigen Zerstörung eines Objekts durch den Garbage Collector aufgerufen wird. Diese Methode heißt finalize() und kann verwendet werden, um sicherzustellen, dass ein Objekt sauber beendet wird.

Zum Beispiel könnten Sie finalize() verwenden, um sicherzustellen, dass eine von diesem Objekt gehaltene offene Datei geschlossen wird.

Um einer Klasse einen Finalizer hinzuzufügen, definieren Sie einfach die finalize()-Methode. Die Java-Laufzeitumgebung ruft diese Methode auf, wann immer sie ein Objekt dieser Klasse recyceln will.

Innerhalb der finalize()-Methode geben Sie die Aktionen an, die vor der Zerstörung eines Objekts ausgeführt werden müssen.

Die finalize()-Methode hat diese allgemeine Form:

protected void finalize() {
    // finalization code here
}

Hier ist das Schlüsselwort protected ein Spezifizierer, der den Zugriff auf finalize() durch Code außerhalb der Klasse verhindert.

Das bedeutet, dass Sie nicht wissen können, wann oder sogar ob finalize() ausgeführt wird. Wenn Ihr Programm beispielsweise vor der Garbage Collection endet, wird finalize() nicht ausgeführt.

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java abstrakte Klassen und Methoden: Ein umfassender Leitfaden
  3. Java Annotation Types: Umfassender Leitfaden zu vordefinierten, benutzerdefinierten und Meta-Annotations
  4. Java String.charAt(): Syntax, Rückgabetyp, Exceptions und praktisches Beispiel
  5. Java String.endsWith(): String-Suffixe prüfen mit Beispielen
  6. Java String-Ersetzung meistern: replace(), replaceAll() und replaceFirst() erklärt
  7. Java String toLowerCase() & toUpperCase(): Text-Groß-/Kleinschreibung mit Locale-Bewusstsein konvertieren
  8. Java Methoden überschreiben: Superclass-Verhalten anpassen
  9. Java 9 Collection Factory Methods: Unveränderliche List, Set & Map kompakt erzeugen
  10. Java 9 Private Interface Methods: Bessere Kapselung & Code-Wiederverwendung