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.)
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
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)
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..!
public static void main(String a[]) ist der Haupteinstiegspunkt Unterschrift für ein typisches Java-Programm. Sie sollten also mit dieser Methodensignatur fortfahren.
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
Das ist das erwartete Verhalten. Die Signatur des Realen
main
Mathod muss seinpublic static void main(String... a)
oder wie es äquivalent ist,public static void main(String[] a)
.Sie könnten beliebig viele Funktionen aufrufenmain
– 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