In Java-Programmen ist der Punkt, von dem aus das Programm seine Ausführung beginnt oder einfach der Einstiegspunkt von Java-Programmen, die main()-Methode. Daher ist sie eine der wichtigsten Methoden von Java und es ist sehr wichtig, sie richtig zu verstehen.
Die häufigste Syntax der main()-Methode:
class
GeeksforGeeks {
public
static
void
main(String args)
{
System.out.println(
"I am a Geek"
);
}
}
I am a Geek
Erklärung:
Jedes Wort in der public static void main-Anweisung hat eine Bedeutung für die JVM.
- Öffentlich: Es ist ein Zugriffsmodifikator, der angibt, von wo und wer auf die Methode zugreifen kann. Wenn Sie die Methode main() öffentlich machen, ist sie global verfügbar. Sie wird öffentlich gemacht, damit die JVM sie von außerhalb der Klasse aufrufen kann, da sie nicht in der aktuellen Klasse vorhanden ist.
class
GeeksforGeeks {
private
static
void
main(String args)
{
System.out.println(
"I am a Geek"
);
}
}
Error: Main method not found in class, please define the main method as:public static void main(String args)or a JavaFX application class must extend javafx.application.Application
- Statisch: Es ist ein Schlüsselwort, das, wenn es mit einer Methode verbunden ist, diese zu einer klassenbezogenen Methode macht. Die Methode main() ist statisch, damit die JVM sie aufrufen kann, ohne die Klasse zu instanziieren. Dies erspart auch die unnötige Verschwendung von Speicher, der von dem nur für den Aufruf der main()-Methode deklarierten Objekt durch die JVM verwendet worden wäre.
class
GeeksforGeeks {
public
void
main(String args)
{
System.out.println(
"I am a Geek"
);
}
}
- Statisch: Es ist ein Schlüsselwort, das, wenn es mit einer Methode verbunden ist, diese zu einer klassenbezogenen Methode macht. Die Methode main() ist statisch, damit die JVM sie aufrufen kann, ohne die Klasse zu instanziieren. Dies erspart auch die unnötige Verschwendung von Speicher, der von dem nur für den Aufruf der main()-Methode deklarierten Objekt durch die JVM verwendet worden wäre.
Error: Main method is not static in class test, please define the main method as:public static void main(String args)
class
GeeksforGeeks {
public
static
int
main(String args)
{
System.out.println(
"I am a Geek"
);
return
1
;
}
}
Error: Main method not found in class, please define the main method as:public static void main(String args)or a JavaFX application class must extend javafx.application.Application
class
GeeksforGeeks {
public
static
void
myMain(String args)
{
System.out.println(
"I am a Geek"
);
}
}
Error: Main method not found in class, please define the main method as:public static void main(String args)or a JavaFX application class must extend javafx.application.Application
class
GeeksforGeeks {
public
static
void
main(String args)
{
for
(String elem : args)
System.out.println(elem);
}
}
123
Abgesehen von der oben genannten Signatur von main, könnten Sie public static void main(String args) oder public static void main(String… args) verwenden, um die main-Funktion in Java aufzurufen. Die Methode main wird aufgerufen, wenn ihr formaler Parameter mit dem eines Arrays von Strings übereinstimmt.
Kann die Methode main int sein? Wenn nein, warum?
class
GeeksforGeeks {
public
static
int
main(String args) {
System.out.println(
"GeeksforGeeks"
);
}
}
Java gibt nicht implizit int zurück, auch wenn wir den Rückgabetyp von main als int deklarieren.
Wir erhalten einen Kompilierzeitfehler
prg1.java:6: error: Fehlende Return-Anweisung
}
^
1 Fehler
class
GeeksforGeeks {
public
static
int
main(String args) {
System.out.println(
"GeeksforGeeks"
);
return
0
;
}
}
Nun, auch wenn wir selbst explizit 0 oder Integer zurückgeben, von int main.
Wir erhalten einen Laufzeitfehler.
Fehler: Main-Methode muss einen Wert vom Typ void zurückgeben in der Klasse GeeksforGeeks, bitte
definieren Sie die main-Methode als:
public static void main(String args)
Erklärung –
Die C- und C++-Programme, die int von main zurückgeben, sind Prozesse des Betriebssystems. Der int-Wert, der von main in C und C++ zurückgegeben wird, ist der Exit-Code oder Exit-Status. Der Exit-Code eines C- oder C++-Programms verdeutlicht, warum das Programm beendet wurde. Der Exit-Code 0 bedeutet einen erfolgreichen Abbruch. Ein Exit-Status ungleich Null zeigt jedoch einen Fehler an. Z.B. Exit-Code 1 zeigt diverse Fehler an, wie z.B. „Dividieren durch Null“
Der Elternprozess eines beliebigen Kindprozesses wartet auf den Exit-Status des Kindprozesses. Und nachdem er den Exit-Status des Child-Prozesses erhalten hat, löscht er den Child-Prozess aus der Prozesstabelle und gibt die ihm zugewiesenen Ressourcen frei. Deshalb ist es für C- und C++-Programme (die Prozessoren des Betriebssystems sind) obligatorisch, den Exit-Status von main explizit oder implizit zu übergeben.
Das Java-Programm läuft jedoch als ‚main thread‘ in der JVM. Das Java-Programm ist nicht einmal direkt ein Prozess des Betriebssystems. Es gibt keine direkte Interaktion zwischen Java-Programm und Betriebssystem. Es gibt keine direkte Zuweisung von Ressourcen an das Java-Programm, bzw. das Java-Programm belegt keinen Platz in der Prozesstabelle. An wen sollte es dann den Exit-Status zurückgeben. Deshalb ist die main-Methode von Java so konzipiert, dass sie keinen int- oder exit-Status zurückgibt.
Aber die JVM ist ein Prozess eines Betriebssystems, und die JVM kann mit einem bestimmten exit-Status beendet werden. Mit Hilfe von java.lang.Runtime.exit(int status) oder System.exit(int status)