Heim Java javaLernprogramm Beispiele für die Analyse variabler Parametertypen von Java-Methoden

Beispiele für die Analyse variabler Parametertypen von Java-Methoden

Jan 22, 2017 am 10:58 AM

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[]){
      
  }
}
Nach dem Login kopieren


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);
  }
}
Nach dem Login kopieren

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});
Nach dem Login kopieren

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);
  }
}
Nach dem Login kopieren

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); //通过编译,正常运行
  }
}
Nach dem Login kopieren


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); //编译错误
  }
}
Nach dem Login kopieren


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[]){
       
  }
}
Nach dem Login kopieren


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);
  }
}
Nach dem Login kopieren


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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

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

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

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

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

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]

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

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.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Mar 17, 2025 pm 05:45 PM

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.

See all articles