Beispiele für die Analyse variabler Parametertypen von Java-Methoden
Der variable Parametertyp in Java-Methoden ist ein sehr wichtiges Konzept und hat ein sehr breites Anwendungsspektrum. Dieser Artikel analysiert dies anhand von Beispielen. Die Details sind wie folgt:
Wenn viele Java-Anfänger den folgenden Code sehen, stellen sie im Allgemeinen eine Frage: Was sind die drei kleinen Punkte in der DealArray-Methode?
public class TestVarArgus { public static void dealArray(int... intArray){ } public static void main(String args[]){ } }
Das wird in diesem Artikel besprochen: variable Parametertypen, auch unbestimmte Parametertypen genannt. Die englische Abkürzung lautet varargus und bedeutet variabler Argumenttyp. Aus dem Namen ist leicht ersichtlich, dass die Anzahl variabel ist, wenn diese Methode Parameter empfängt. Okay, rufen wir diese Methode jetzt auf. Bitte schauen Sie sich den Code und die Ausgabe an:
public class TestVarArgus { public static void dealArray(int... intArray){ for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void main(String args[]){ dealArray(); dealArray(1); dealArray(1, 2, 3); } }
Ausgabe:
1
1 2 3
Sie können diesen variablen Parameter über den Aufruf im Hauptmenü sehen Methode Sie kann entweder keine Parameter haben (leere Parameter) oder eine variable Länge haben. Jeder, der das sieht, wird wahrscheinlich verstehen, dass dieser Parameter variabler Länge eigentlich einem Array-Parameter ziemlich ähnlich ist. Tatsächlich ist dies tatsächlich der Fall. Der Compiler wandelt diesen letzten formalen Parameter stillschweigend in einen Array-Parameter um und setzt eine Markierung in die kompilierte Klassendatei, um anzuzeigen, dass es sich um eine Methode mit einer variablen Anzahl tatsächlicher Parameter handelt. Bitte schauen Sie sich den Code an:
dealArray(); //dealArray(int[] intArray{}); dealArray(1); //dealArray(int[] intArray{1}); dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3});
Nachdem Sie das gesagt haben, können Sie ihn überprüfen, um zu sehen, ob dieser variable Parameter ein Array-Klassenparameter ist? Schauen Sie sich den Code an:
public class TestVarArgus { public static void dealArray(int... intArray){ for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void dealArray(int[] intArray){//会有Duplicate method dealArray(int[]) in type TestVarArgus的错误 for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void main(String args[]){ dealArray(); dealArray(1); dealArray(1, 2, 3); } }
Wie aus dem obigen Code ersichtlich ist, stehen diese beiden Methoden in Konflikt und können nicht überladen werden. Hier machen wir ein weiteres interessantes Experiment:
Code 1:
public class TestVarArgus { public static void dealArray(int... intArray){ for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void main(String args[]){ int[] intArray = {1, 2, 3}; dealArray(intArray); //通过编译,正常运行 } }
Code 2:
public class TestVarArgus { public static void dealArray(int[] intArray){ for (int i : intArray) System.out.print(i +" "); System.out.println(); } public static void main(String args[]){ dealArray(1, 2, 3); //编译错误 } }
Wie aus den beiden obigen Codeteilen ersichtlich ist, sind variable Parameter mit Array-Klassenparametern kompatibel, Array-Klassenparameter jedoch nicht mit variablen Parametern. Tatsächlich weiß der Compiler für den zweiten Teil des Codes nicht, was veränderlich und unveränderlich ist. Aus seiner Sicht muss er eine Methode der Klasse dealArray(int, int, int) definieren. Daher ist es natürlich unmöglich, Array-Klassenparameter mit der DealArray-Methode abzugleichen.
Da die Java-Methode variable Parameter empfängt, schauen wir uns den folgenden Code an:
public class TestVarArgus { public static void dealArray(int count, int... intArray){ } public static void dealArray(int... intArray, int count){//编译报错,可变参数类型应该作为参数列表的最后一项 } public static void main(String args[]){ } }
Dieser Code veranschaulicht das: Der variable Parametertyp muss das letzte Element in der Parameterliste sein und kann nicht vor dem Parameter fester Länge platziert werden. Sie denken wahrscheinlich an das Wort „Priorität“. Da es keine genaue Erklärung gibt, können Sie das Wort „Priorität“ verwenden, um es hier zu verstehen:
public class TestVarArgus { public static void dealArray(int... intArray){ System.out.println("1"); } public static void dealArray(int count, int count2){ System.out.println("2"); } public static void main(String args[]){ dealArray(1, 2); } }
Code Jeder, der es gepostet hat, weiß wahrscheinlich, dass die Ausgabe 2 und nicht 1 ist. Hier müssen Sie bedenken, dass, wenn eine Methode mit fester Länge abgeglichen werden kann, diese Methode zuerst abgeglichen wird. Die überladene Methode mit variablen Parametern ist die zuletzt ausgewählte.
Schließlich weiß jeder, dass der Parameter der Hauptmethode ein Array-Typ ist, sodass er tatsächlich in einen unbestimmten Parametertyp geändert werden kann. Probieren Sie es aus und prüfen Sie, ob Kompilierungsfehler vorliegen.
Ich glaube, dass das, was in diesem Artikel beschrieben wird, einen gewissen Referenzwert für das Erlernen der Java-Programmierung für jeden hat.
Weitere verwandte Artikel zur Instanzanalyse variabler Parametertypen von Java-Methoden finden Sie auf der chinesischen PHP-Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.
