Signatur der legalen Hauptmethode in Java

Lesezeit: 5 Minuten

Benutzer-Avatar
Ravi

class NewClass{
    public static void main(String a){
        System.out.print("Hello");
    }
}

Wenn ich versuche, den obigen Code auszuführen, wird ein Fehler angezeigt: Hauptmethode nicht gefunden. Als ich die Signatur auf geändert habe

public static void main(String... a)

oder

public static void main(String a[])

Dann funktioniert es. Meine Frage ist, auf wie viele verschiedene Arten wir eine legale Hauptmethodensignatur schreiben können. Und was bedeutet die String... Version bedeutet?

  • Das ist das erwartete Verhalten. Die Signatur des Realen main Mathod muss sein public static void main(String... a) oder wie es äquivalent ist, public static void main(String[] a).Sie könnten beliebig viele Funktionen aufrufen main – solange ihre Unterschrift unterschiedlich ist. Aber sogar dann, nur derjenige mit der richtigen Signatur wird als Einstiegspunkt zu einer Java-Anwendung behandelt.

    – Peterka

    28. November 2012 um 10:59 Uhr


  • auch gleichwertig public static void main(String[] a)

    – jlordo

    28. November 2012 um 11:00 Uhr

  • Es ist einfach von einfach. Bitte google java ‘Hallo Welt’ Beispiel

    – Maxim Schoustin

    28. November 2012 um 11:01 Uhr

  • weil der Parameter der Hauptmethode ein String-Array und keine String-Variable ist. Für zwei gültige Optionen müssen Sie den folgenden Link lesen. stackoverflow.com/questions/4089572/…

    – HERR X

    28. November 2012 um 11:03 Uhr

  • Die Methode main() akzeptiert einen einzigen Parameter: ein Array von Strings. Dieser Parameter ist der Mechanismus, durch den das Laufzeitsystem Befehlszeilenargumente an Ihre Anwendung übergibt.

    – HERR X

    28. November 2012 um 11:06 Uhr

Einfach weil das die Anforderung von Java ist.

Eine Hauptmethode/Einstiegspunkt zu einem Programm muss eine Methode sein, die als deklariert ist public static void main(String[] args). Ihre Methode, die mit a deklariert wurde String Parameter war ähnlich, aber nicht kompatibel.

Ein Array ist nicht dasselbe wie ein einzelner String. Wenn jemand Java mit drei Befehlszeilenparametern aufgerufen hätte, würde die JVM ein String-Array mit drei Elementen erstellen, und wie würde sie dies dann an Ihre Methode übergeben, die nur einen einzigen String akzeptiert?

In diesem Fall haben Sie also versucht, ein Java-Programm zu starten, das auf einer Klasse basiert, die hatte keine Hauptmethode als Einstiegspunkt fungieren.

(Der Grund warum String... funktioniert, weil dies syntaktischer Zucker für einen Array-Parameter ist und zu einer Methode mit derselben Signatur kompiliert wird.)

Benutzer-Avatar
Ravi

Schließlich fand ich die Antwort auf meine Frage in Von Sun zertifizierter Programmierer für Java 6 Buchen.

Die erste Frage war, wie viele verschiedene rechtliche Möglichkeiten der Verwendung der Hauptmethode?

Zugelassene Hauptmethodensignaturen sind

public static void main(String a[])
public static void main(String[] a)
public static void main(String... a)

was macht (String... a) meint ??

So deklarieren Sie eine Methode mit a var-args Parameter, müssen wir mit einem folgen ellipsis(...) Verwenden Sie dann Leerzeichen und dann den Namen des Arrays, das den empfangenen Parameter enthält. Also, obiger Begriff bekannt als Variables Argument und was bedeutet 0 bis viele.

Und die Regeln für die Verwendung variabler Argumentparameter lauten: muss der letzte Parameter in der Methodensignatur sein und kann nur ein var-args in einer Methode haben.

Z.B:

void myfunc(String... a)              //legal
void myfunc(String a...)              //illegal
void myfunc(String a,int... b)         //legal
void myfunc(String... a,int b)        //illegal 

  • welche seite in kathy sierras buch

    – anshulkatta

    23. Mai 2013 um 6:48 Uhr

  • Es ist jetzt eine Weile her für ein Update! aber Sie haben einen Tippfehler in der 3. Anweisung void myfunc(String a,int.. b) es sollte sein int... b nicht int.. b ^^ !

    – Abdelghani Roussi

    12. Oktober 2020 um 19:02 Uhr

Sein Standard in Java. Der Java-Compiler erwartet ein Array von Befehlszeilenargumenten. Deshalb müssen Sie String-Argumente angeben[] oder Schnur…

  • das heißt also … wir können ein Array mit deklarieren ... Auch. ist es ??

    – Ravi

    28. November 2012 um 11:09 Uhr


  • seine tatsächlich variable Anzahl von Argumenten. Sie können damit Werte an eine Funktion übergeben. kann aber kein normales Array innerhalb einer Funktion deklarieren.

    – Debobroto Das

    28. November 2012 um 11:10 Uhr

Benutzer-Avatar
Juan L. Restituyo

public static void main(String… a) –> Ist eine Methode mit einer variablen Argumentliste, die intern (in der Methode) als Array behandelt wird.

Rechtsgültige Signatur der Hauptmethode:

public static void main(String a[])

static public void main(String a[])

public static void main(String[] a)

static public void main(String[] a)

public static void main(String... a)

static public void main(String... a)

Benutzer-Avatar
Vamsi Sangam

All dies sind gültige/gesetzliche Deklarationen der Hauptfunktion in Java.

public static void main(String[] args) {
    // code
}

static public void main(String[] args) {
    // code
}

static public void main(String args[]) {
    // code
}

public static void main(String[] MarkElliotZuckerberg) {
    // code
}

public static void main(String... NewYork) {
    // code
}

Die zu beachtenden Punkte sind –

  • Die Schlüsselwörter public und static sind austauschbar, aber obligatorisch.
  • Der Parameter der main-Methode kann die var-args-Syntax annehmen.
  • Der Name kann alles sein..!

Nur zur Übung.. 😛 …Dies sind Beispiele für ungültige Hauptmethodendeklarationen –

static void main(String[] args) {
    // public is missing
}

public void main(String args[]) {
    // static is missing
}

public static int main(String... Java) {
    // return type not void

    return 0;
}

public void Main(String args[]) {
    // "main" not "Main"
}

public void main(string args[]) {
    // "String" not "string"
}

public void main(String.. SayHi) {
    // Ellipses is 3 dots !
}

Einige geben Fehler, während andere einfach die Hauptmethode überladen … Hoffe, das hilft …! Wenn ja, lass es mich wissen, indem du einen Kommentar abgibst..!

Quelle – Java-Tutorials zur Theorie der Programmierung

Benutzer-Avatar
Juvanis

public static void main(String a[]) ist der Haupteinstiegspunkt Unterschrift für ein typisches Java-Programm. Sie sollten also mit dieser Methodensignatur fortfahren.

Benutzer-Avatar
Narendra Pathai

Java Runtime versucht, eine Methode mit dem Namen “main” mit den Argumenttypen “String[]”. Es ist genauso wie die Verwendung von Reflektion zum Suchen einer Methode mit Typargumenten als String[].

Auch Saite[] werden verwendet, damit die Laufzeit die bereitgestellten Programmargumente oder Befehlszeilenargumente übergeben kann. Es ist, als ob die Laufzeit die Argumente mit Leerzeichen tokenisiert und dann diese Methode mit dem Namen “main” aufruft.

Die Methode main muss öffentlich, statisch und void deklariert werden. Es muss ein einzelnes Argument akzeptieren, das ein Array von Zeichenfolgen ist. Diese Methode kann als beides deklariert werden

public static void main(String[] args)
or

public static void main(String... args)

Weitere Informationen finden Sie auch in der Oracle Java-Spezifikationsdokumentation

Kapitel 12 Ausführung – Abschnitt 12.1.4 Test.main aufrufen

  • Übrigens ist die Verwendung des Namens “main” für den Beginn der Ausführung nur eine Konvention.

    – Narendra Pathai

    28. November 2012 um 11:23 Uhr

1018590cookie-checkSignatur der legalen Hauptmethode in Java

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy