Methoden & Parameter und Objekt

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab gehen wir auf Methoden und Objekte ein. Die Aufgabe besteht darin, zu lernen, wie man eine Methode mit Parametern definiert. Ein Objekt ist ein sehr wichtiger Begriff in der OOP-Sprache, daher hilft es Ihnen, sich gut damit auszukennen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/DataStructuresGroup -.-> java/arrays("Arrays") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ProgrammingTechniquesGroup -.-> java/recursion("Recursion") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/class_methods("Class Methods") subgraph Lab Skills java/arrays -.-> lab-178547{{"Methoden & Parameter und Objekt"}} java/method_overloading -.-> lab-178547{{"Methoden & Parameter und Objekt"}} java/recursion -.-> lab-178547{{"Methoden & Parameter und Objekt"}} java/classes_objects -.-> lab-178547{{"Methoden & Parameter und Objekt"}} java/class_methods -.-> lab-178547{{"Methoden & Parameter und Objekt"}} end

Methoden und Parameter

In einigen Fällen benötigen Sie Code, der wiederverwendet werden kann, um ähnliche Probleme zu lösen, wie zum Beispiel das Ausgeben des Alters und des Namens einer Person. Für verschiedene Personen sind Name und Alter unterschiedlich. Diese beiden Variablen können als Parameter an einen Codeblock übergeben werden. Hier führen wir das Konzept der Methode ein, die die Aufgabe ausführen wird.

Beispiel:

Schreiben Sie folgenden Code in die Datei /home/labex/project/methodTest.java:

public class methodTest
{
    public static void main(String[] args)
    {
        // rufen Sie unsere selbst definierte Methode auf
        printInfo("Mike", 18);
        // rufen Sie unsere selbst definierte Methode auf
        System.out.println(fibonacci(10));
        System.out.println(fibonacciNormal(10));
    }
    // definieren wir eine Klassenmethode, um persönliche Informationen auszugeben
    public static void printInfo(String name, int age){
        System.out.println("Hello " + name + ", your age is " + age);
    }
    // definieren Sie eine Klassenmethode, um die Fibonacci-Zahlen rekursiv zu berechnen
    public static int fibonacci(int n){
        if(n<=2){
            return 1;
        }else{
            return fibonacci(n-1)+fibonacci(n-2);
        }
    }
    // definieren Sie eine Klassenmethode, um die Fibonacci-Zahlen mit einer Iterationsschleife zu berechnen
    public static int fibonacciNormal(int n){
        if(n<=2){
            return 1;
        }
        int n1=1,n2=1,sum=0;
        for(int i=0;i<n-2;i++){
            sum=n1+n2;
            n1=n2;
            n2=sum;
        }
        return sum;
    }
}

Ausgabe:

Führen Sie die Datei methodTest.java mit folgenden Befehlen aus:

javac /home/labex/project/methodTest.java
java methodTest

Sehen Sie sich die Ausgabe an:

Hello Mike, your age is 18
55
55

Im obigen Beispiel schreiben wir eine Funktion namens printInfo. Sie können sie wie Sie möchten benennen. Es gibt zwei Parameter und der Rückgabetyp ist void, was bedeutet, dass nichts zurückgegeben wird. Sie können den Rückgabetyp Ihrer Funktion als beliebigen Typ festlegen, den Sie benötigen, und die Anzahl und die Typen der Parameter können beliebig sein. Sie können Ihre Methode wie folgt definieren:

Beispiel:

public/private static/final/{nicht erforderlich} RETURN_TYPE METHOD_NAME( LIST OF PARAMETERS ) {
    // STATEMENTS
}
public String getName(){}
public void setName(){}
public static void newInstance(){}
public final String msg(){}

Java stellt viele Funktionen zur Verfügung, die die häufigsten Operationen als integrierte Bibliotheksmethoden ausführen, wie mathematische Funktionen. Diese Funktionen werden Methoden genannt. Die Methoden werden mit einer Syntax aufgerufen, die ähnlich der Print-Anweisungen ist, die wir bereits kennen:

Beispiel:

double root = Math.sqrt(16.0);   // root = 4.0
double height = Math.sin(1.5);   // height = 0.9974949866040544

Objekt

In Java gibt es zwei Arten von Typen: primitive Typen und Objekttypen. Primitives wie int und boolean beginnen mit Kleinbuchstaben; Objekttypen beginnen mit Großbuchstaben. Diese Unterscheidung ist nützlich, da sie uns einige der Unterschiede zwischen ihnen in Erinnerung bringt:

Wenn Sie eine primitive Variable deklarieren, erhalten Sie Speicherplatz für einen primitiven Wert. Wenn Sie eine Objektvariable deklarieren, erhalten Sie einen Speicherplatz für eine Referenz auf ein Objekt. Um Speicherplatz für das Objekt selbst zu erhalten, müssen Sie den new-Operator verwenden.

Wenn Sie eine primitive Variable nicht initialisieren, wird ihr ein Standardwert zugewiesen, der von ihrem Typ abhängt. Beispielsweise 0 für int und false für boolean. Der Standardwert für Objekttypen ist null, was angibt, dass kein Objekt von den Referenzvariablen referenziert wird.

Primitive Variablen sind gut isoliert, in dem Sinne, dass Sie nichts tun können, was in einer Methode einen Effekt auf eine Variable in einer anderen Methode hat. Objektvariablen können schwierig zu verwenden sein, da sie nicht so gut isoliert sind. Wenn Sie eine Referenz auf ein Objekt als Argument übergeben, kann die Methode, die Sie aufrufen, das Objekt modifizieren, und Sie werden dann den Effekt sehen. Natürlich kann das auch ein gutes Ding sein, aber Sie müssen sich dessen bewusst sein.

Wenn wir primitive Variablen an eine Methode übergeben (Parameterübergabe per Wert), kopieren wir tatsächlich die Werte der Primitives und verwenden die Kopien innerhalb der Methode. Alle Operationen innerhalb der Methode arbeiten auf den Kopien; und außerhalb der Methode bleiben die Werte der primitiven Variablen unberührt. Wenn wir jedoch nicht-primitive Objekte an eine Methode übergeben (Parameterübergabe per Referenz), übergeben wir die Referenzvariablen an die Methode. Alle Operationen werden tatsächlich die ursprünglichen Objekte verwenden und/oder beeinflussen.

Beispiel:

Schreiben Sie folgenden Code in die Datei /home/labex/project/objectTest.java:

public class objectTest {
    public static void main(String[] args){
        // verwenden Sie new, um ein Arrayobjekt mit zwei Elementen zu erstellen
        int[] numbers = new int[2];
        // weisen Sie Werten an das Arrayobjekt zu
        numbers[0] = 1;
        numbers[1] = 2;
        // erstellen Sie primitive Variablen auf diese Weise
        int a = 1, b = 2;

        // erstellen Sie ein Testobjekt
        objectTest test = new objectTest();

        test.changeInt(a, b);
        System.out.println("Now a is " + a + ", b is " + b);

        test.changeArray(numbers);
        System.out.println("Now numbers contain:");

        for(int i : numbers){
            System.out.print(i + "\t");
        }
    }
    // definieren Sie eine Objektmethode, um int-Werte zu ändern
    public void changeInt(int a,int b){
        a = 2;
        b = 3;
        System.out.println("In changeInt method, a is " + a + ", b is " + b);
    }
    // definieren Sie eine Objektmethode, um Arraywerte zu ändern
    public void changeArray(int[] number){
        for(int i = 0;i < number.length;i++){
            number[i] = number[i]+1;    // ändern Sie den Wert des Arrayelements um 1 erhöhen
        }
        System.out.println("In changeArray method, numbers contain:");
        for(int i : number){
            System.out.print(i + "\t");
        }
        System.out.println();
    }
}

Ausgabe:

Führen Sie die Datei objectTest.java im Terminal mit dem folgenden Befehl aus:

javac /home/labex/project/objectTest.java
java objectTest

Sehen Sie sich die Ausgabe an:

In changeInt method, a is 2, b is 3
Now a is 1, b is 2
In changeArray method, numbers contain:
2    3
Now numbers contain:
2    3

Es gibt noch einen anderen Unterschied zwischen Primitiven und Objekttypen. Sie können keine neuen Primitiven zu Java hinzufügen (es sei denn, Sie befinden sich auf dem Standardsausschuss), aber Sie können neue Objekttypen erstellen! Wir werden sehen, wie das im nächsten Kapitel geht.

Zusammenfassung

Methoden sind in Klassen üblich. Eine Methode ist ein Codeblock, der einige spezielle Operationen ausführt. Java stellt viele vordefinierte Klassen zur Verfügung, die wir direkt verwenden können. Es gibt zwei Möglichkeiten, Parameter an Methoden zu übergeben: per Wert und per Referenz. Ihre Effekte sind unterschiedlich. Im nächsten Lab werden wir sie Ihnen vorstellen. Wir hoffen, dass das hilfreich sein wird.