Eine Java -Methode ist eine Kombination einiger Aussagen, um einen Vorgang auszuführen. Wenn Sie beispielsweise die Methode von System.out.println aufrufen, führt das System tatsächlich viele Anweisungen aus, um Informationen auf der Konsole auszugeben.
Jetzt lernen Sie, wie Sie Ihre eigenen Methoden erstellen. Sie können Rückgabewerte oder keine Rückgabewerte, Parameter oder keine Parameter haben. Überladungsmethoden sollten denselben Methodennamen verwenden und abstrakte Methoden in der Programmierung verwenden.
Erstellungsmethode
Verwenden wir das folgende Beispiel, um die Syntax der Methode zu erläutern:
public static int funcname (int a, int b) {// body}Hier
Methoden enthalten auch Verfahren oder Funktionen.
Die Definition einer Methode enthält einen Methodenheader und einen Methodenkörper. Wie unten gezeigt:
Modifikator ReturnType NameOfMethod (Parameterliste) {// Methode Body}Die obige Syntax umfasst
Beispiel
Dies ist die oben definierte Methode max (), die zwei Parameter Num1 und Num2 akzeptiert, um den Maximalwert zwischen den beiden zurückzugeben.
/** Das Snippet gibt das Minimum zwischen zwei Zahlen zurück. if (n1> n2) min = n2; sonst min = n1; Rückkehr min; }
Methodenaufruf
Um eine Methode zu verwenden, muss die Methode aufgerufen werden. Es gibt zwei Möglichkeiten, die Methode aufzurufen, einer hat einen Rückgabewert und der andere keinen Rückgabewert.
Das Aufrufen einer Methode ist sehr einfach. Wenn ein Programm eine Methode aufrufen muss, überträgt das Steuerungsprogramm auf die aufgerufene Methode. Die Methode gibt zwei Bedingungen an den Anrufer zurück:
Nehmen Sie die Methode, die als Anrufanweisung zurückgibt, das folgende Beispiel: Sehen Sie sich das folgende Beispiel:
System.out.println ("wiki.jikexueyuan.com!");Der Rückgabewert dieser Methode kann durch das folgende Beispiel verstanden werden:
int result = sum (6, 9);
Beispiel
Das folgende Beispiel zeigt, wie eine Methode definiert und wie man sie nennt:
public class examPlemInnumber {public static void main (String [] args) {int a = 11; int b = 6; int c = minfunktion (a, b); System.out.println ("minimal value =" + c); } / ** Gibt die mindestens zwei Zahlen zurück* / public static int minfunktion (int n1, int n2) {int min; if (n1> n2) min = n2; sonst min = n1; Rückkehr min; }}Die folgenden Ergebnisse werden produziert
Minimalwert = 6
Schlüsselwort void
Mit dem Schlüsselwort -Void können wir eine Methode ohne Rückgabewert erstellen. Hier erstellen wir im nächsten Beispiel eine Void -Methode -Methode. Diese Methode hat keinen Rückgabewerttyp. Das Aufrufen der Void -Methode muss Methodenpunkte deklarieren (255.7); Die Java -Aussage endet mit einem Semikolon, wie unten gezeigt:
public class Beispielvoid {public static void main (String [] args) {methodrankpoints (255.7); } public static void methodrankpoints (doppelte Punkte) {if (Punkte> = 202.5) {System.out.println ("Rang: a1"); } else if (Punkte> = 122.4) {System.out.println ("Rang: a2"); } else {System.out.println ("Rang: a3"); }}}Dies führt zu den folgenden Ergebnissen:
Rang: A1
Übergeben Sie die Parameter nach Werten
Parameter müssen beim Aufrufen einer Funktion übergeben werden. Und ihre Bestellung muss die gleiche Reihenfolge der Parameter sein, wenn sie erstellt wurden. Parameter können durch Werte oder Referenzen übergeben werden.
Die Parameter durch Werte übergeben bedeutet, den Parameter der Methode aufzurufen und über den Parameterwert an den Parameter übergeben.
Beispiel
Das folgende Programm gibt ein Beispiel, um zu zeigen, dass die Parameter von Werten übergeben werden. Der Parameterwert ändert sich nicht nach dem Aufrufen der Methode.
public class swappexample {public static void main (String [] args) {int a = 30; int b = 45; System.out.println ("Vor dem Tausch, a =" + a + "und b =" + b); // Die Swap -Methode -Swapfunktion (a, b) aufrufen; System.out.println ("/n ** jetzt, vor und nach dem Austausch wird hier gleich sein **:"); System.out.println ("Nach dem Austausch, a =" + a + "und b ist" + b); } public static void swacfunction (int a, int b) {system.out.println ("Vor dem Austausch (innen), a =" + a + "b =" + b); // N1 mit n2 int c = a auszutauschen; a = b; B = C; System.out.println ("Nach dem Austausch (im Inneren), a =" + a + "b =" + b); }}Dies führt zu den folgenden Ergebnissen:
Vor dem Austausch ist a = 30 und b = 45 vor dem Austausch (im Inneren), a = 30 b = 45 nach dem Austausch (im Inneren), a = 45 b = 30 ** Jetzt, bevor und nach dem Austausch der Werte
Methodenüberlastung
Wenn eine Methode zwei oder mehr Methoden enthält, sind ihre Namen gleich, aber die Parameter sind unterschiedlich, sie wird als Methodenüberladung bezeichnet. Es unterscheidet sich von der Bedeckung. Override bezieht sich auf die Anzahl der Methoden mit demselben Namen, Typ und Parametern.
Betrachten wir das vorherige Beispiel für die Suche nach der Mindestrahmennummer. Wenn wir fragen, um die kleinste Zahl in einem schwimmenden Punkttyp zu finden, müssen wir die Überladung der Methode verwenden, um zwei oder mehr Methoden mit demselben Funktionsnamen, aber unterschiedlichen Parametern zu erstellen.
Die folgenden Beispiele werden erklärt:
public class Beispieloverlading {public static void main (String [] args) {int a = 11; int b = 6; Doppel C = 7,3; Doppel d = 9,4; int result1 = minfunktion (a, b); // Gleicher Funktionsname mit verschiedenen Parametern Doppeler Ergebnis2 = Minfunktion (C, D); System.out.println ("minimal value =" + result1); System.out.println ("Minimum Value =" + Ergebnis2); } // für Integer public static int minfunction (int n1, int n2) {int min; if (n1> n2) min = n2; sonst min = n1; Rückkehr min; } // für doppelt öffentliche statische Doppel -Minfunktion (Double N1, Double N2) {Double Min; if (n1> n2) min = n2; sonst min = n1; Rückkehr min; }}Dies führt zu den folgenden Ergebnissen:
Minimalwert = 6 Minimalwert = 7,3
Überladungsmethoden machen das Programm einfach zu lesen. Hier haben die beiden Methoden den gleichen Namen, aber unterschiedliche Parameter. Erzeugt die minimale Anzahl von Ganzzahl- und Schwimmpunkttypen als Ergebnis des ausgeführten Programms.
Verwenden Sie die Befehlszeilenparameter
Manchmal möchten Sie Parameter bestehen, bevor das Programm ausgeführt wird. Dies kann erreicht werden, indem die Befehlszeilenparameter an die Hauptfunktion weitergegeben werden.
Wenn Sie in der Befehlszeile eine Programmdatei ausführen möchten, wird unmittelbar nach dem Dateinamen ein Befehlszeilenparameter angezeigt. Es ist sehr einfach, die Befehlszeilenparameter in Java -Programmen zu akzeptieren. Sie werden in das Hauptfunktionszeichen -Array übergeben.
Beispiel
Das folgende Beispiel zeigt ein Programm, das alle Befehlszeilenparameter ausgibt:
public class Commandline {public static void main (String args []) {für (int i = 0; i <args.length; i ++) {System.out.println ("args [" + i + "]:" + args [i]); }}}Führen Sie das Programm durch: aus.
Java Commandline Dies ist eine Befehlszeile 200-100
Dies führt zu den folgenden Ergebnissen:
Args [0]: ThisArgs [1]: Isargs [2]: AARGs [3]: CommandArgs [4]: Lineargs [5]: 200Args [6]: -100
Konstruktor
Hier ist ein einfaches Beispiel für die Verwendung von Konstruktoren:
// ein einfacher Konstruktor.Class myclass {int x; // folgt der Konstruktor myclass () {x = 10; }}Sie können ein Objekt instanziieren, indem Sie den Konstruktor aufrufen:
public class condemo {public static void main (String args []) {myclass t1 = new myclass (); Myclass t2 = new myclass (); System.out.println (t1.x + "" + t2.x); }}In der Regel müssen Sie einen Konstruktor verwenden, um einen oder mehrere Parameter zu akzeptieren. Das Parameterübergang entspricht dem Parameterübergang der oben eingeführten gewöhnlichen Methode, bei der die Parameterliste nach dem Namen des Konstruktors aufgeführt ist.
Beispiel
Hier ist ein einfaches Beispiel für die Verwendung von Konstruktoren:
// ein einfacher Konstruktor.Class myclass {int x; // folgt die Konstruktor -MyClass (int i) {x = i; }}Sie können ein Objekt instanziieren, indem Sie den Konstruktor aufrufen:
public class condemo {public static void main (String args []) {myclass t1 = new myclass (10); Myclass t2 = neue myclass (20); System.out.println (t1.x + "" + t2.x); }}Dies führt zu den folgenden Ergebnissen:
10 20
Parameter der variablen Länge
Mit JDK1.5 können Sie die Parameter der variablen Länge desselben Typs übergeben. Deklarieren Sie es mit der folgenden Methode:
Typname ... Parameterame
Wenn Sie eine Methode deklarieren, müssen Sie den Parametertyp vor der Ellipsis angeben, und es kann nur einen Parameter der variablen Länge geben, und der Parameter der variablen Länge muss der letzte der Parameter sein.
Beispiel
public class varargsdemo {public static void main (String args []) {// Aufrufmethode mit variablen Args printmax (34, 3, 3, 2, 56,5); printmax (neues double [] {1, 2, 3}); } public static void printmax (double ... numbers) {if (number.length == 0) {System.out.println ("kein Argument übergeben"); zurückkehren; } Double Ergebnis = Zahlen [0]; für (int i = 1; i <number.length; i ++) if (number [i]> result) result = number [i]; System.out.println ("Der maximale Wert ist" + Ergebnis); }}Dies führt zu den folgenden Ergebnissen:
Der maximale Wert beträgt 56,5Der maximaler Wert 3,0
Finalize () Methode
Sie können eine Methode definieren, die erst vor dem Zerstören vom Müllsammler berufen wird. Diese Methode wird als Finalize () -Methode bezeichnet, mit der auch sichergestellt werden kann, dass ein Objekt gereinigt wird.
Zum Beispiel können Sie Finalize () verwenden, um sicherzustellen, dass die von einem Objekt geöffnete Datei geschlossen wurde.
Um der Klasse einen Finalizer hinzuzufügen, müssen Sie nur die Methode Finalize () definieren. Wenn Java ein Objekt dieser Klasse recyceln will, wird die Methode aufgerufen.
In der Methode Finalize () geben Sie ein Verhalten an, das vor der Zerstörung des Objekts durchgeführt werden muss.
Die Methode Finalize () ähnelt im Allgemeinen wie folgt:
Protected void Finalize () {// Abschlusscode hier}Hier ist das geschützte Schlüsselwort, um sicherzustellen, dass der Code außerhalb der Klasse nicht auf die Methode Finalize () zugreifen kann.
Dies bedeutet, dass Sie nicht wissen können, wann Finalize () ausgeführt wird. Wenn Ihr Programm beispielsweise endet, bevor der Müllsammler auftritt, wird die Methode Finalize () nicht ausgeführt.
Generische Methoden:
Java Generic-Methoden werden häufig verwendet, wenn die Methode einen Wert zurückgibt, der ein Objekt der Containerklasse ist.
öffentliche statische Liste <T> Find (Klasse <T> Clazz, String userID) {....}Im Allgemeinen sollte beim Schreiben einer Java -Generika -Methode der Rückgabewerttyp und mindestens ein Parametertyp generisch sein, und der Typ sollte der gleiche sein. Wenn nur einer der Rückgabewerttypen oder Parametertyp eine generische Verwendung verwendet, wird die Verwendung dieser generischen Methode stark eingeschränkt, im Grunde genommen auf das gleiche Niveau, als ob Sie keine Generika verwenden.
Im Folgenden wird hauptsächlich die Verwendung von zwei sehr ähnlichen java generischen Methoden und die Unterschiede zwischen ihnen eingeführt.
Der erste Typ:
public static <t erweitert CommonService> t GetService (Klasse <T> clazz) {t service = (t) servicemap.get (clazz.getName ()); if (service == null) {service = (t) servicelocator.getService (clazz.getName ()); servicemap.put (clazz.getName (), service); } Return Service; } Der zweite Typ:
public static <t> T GetService (Klasse <? Erweitert CommonService> clazz) {t service = (t) servicemap.get (clazz.getName ()); if (service == null) {service = (t) servicelocator.getService (clazz.getName ()); servicemap.put (clazz.getName (), service); } Return Service; } Hier ist die Klasse, in der sich die generische Methode befindet:
public abstract class Commonservice {private statische Hashmap <String, CommonService> servicemap = new Hashmap <String, CommonService> (); // Hier ist die generische Methodendefinition. . } Diese beiden generischen Methoden haben nur unterschiedliche Methoden und die Methodenkörper sind genau gleich. Was ist der Unterschied?
Lassen Sie sie sie verwenden und Sie werden den Unterschied kennen.
Verwenden Sie die erste generische Methode:
public class main {public static void main (String [] args) {NotizeService NoticesService = commonservice.getService (NotizeService.class); // Verwenden Sie die erste generische Methode korrekt, ohne Fehler zu kompilieren. NotizeService NotizeService = CommonService.getService (UserService.class); // Wenn Sie die erste generische Methode falsch verwenden, tritt ein Kompilierungsfehler auf. }} Verwenden Sie die zweite generische Methode:
public class main {public static void main (String [] args) {NotizeService NoticesService = commonservice.getService (NotizeService.class); // Verwenden Sie die zweite generische Methode richtig, es gibt keine Kompilierungsfehler, die Logik ist korrekt, und es gibt keine Ausnahmen während der Laufzeit. NotizeService NoticesService = CommonService.getService (UserService.class); // Wenn Sie die zweite generische Methode falsch verwenden, gibt es keine Kompilierungsfehler, aber die Logik ist falsch und eine Ausnahme wird während der Laufzeit auftritt, was gefährlich ist! }}Jetzt kenne ich den Unterschied zwischen diesen beiden sehr ähnlichen generischen Methoden?