Nei programmi Java, il punto da cui il programma inizia la sua esecuzione o semplicemente il punto di ingresso dei programmi Java è il metodo main(). Quindi, è uno dei metodi più importanti di Java e averne una corretta comprensione è molto importante.
Sintassi più comune del metodo main():
class
GeeksforGeeks {
public
static
void
main(String args)
{
System.out.println(
"I am a Geek"
);
}
}
I am a Geek
Spiegazione:
Ogni parola nell’istruzione public static void main ha un significato per la JVM.
- Pubblico: È un modificatore di accesso, che specifica da dove e chi può accedere al metodo. Rendere pubblico il metodo main() lo rende globalmente disponibile. Viene reso pubblico in modo che la JVM possa invocarlo dall’esterno della classe poiché non è presente nella classe corrente.
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
class
GeeksforGeeks {
public
void
main(String args)
{
System.out.println(
"I am a Geek"
);
}
}
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
Oltre alla suddetta firma di main, si potrebbe usare public static void main(String args) o public static void main(String… args) per chiamare la funzione main in java. Il metodo main viene chiamato se il suo parametro formale corrisponde a quello di un array di Stringhe.
Il metodo main può essere int? Se no, perché?
class
GeeksforGeeks {
public
static
int
main(String args) {
System.out.println(
"GeeksforGeeks"
);
}
}
Java non restituisce int implicitamente, anche se dichiariamo il tipo di ritorno di main come int.
Abbiamo un errore di compilazione
prg1.java:6: error: dichiarazione di ritorno mancante
}
^
1 errore
class
GeeksforGeeks {
public
static
int
main(String args) {
System.out.println(
"GeeksforGeeks"
);
return
0
;
}
}
Ora, anche se restituiamo 0 o intero esplicitamente noi stessi, da int main.
Abbiamo un errore di run time.
Errore: Il metodo main deve restituire un valore di tipo void nella classe GeeksforGeeks, si prega di
definire il metodo main come:
public static void main(String args)
Spiegazione –
I programmi C e C++ che restituiscono int da main sono processi del sistema operativo. Il valore int restituito da main in C e C++ è il codice di uscita o lo stato di uscita. Il codice di uscita del programma C o C++ illustra perché il programma è terminato. Il codice di uscita 0 significa che il programma è terminato con successo. Tuttavia, uno stato di uscita diverso da zero indica un errore. Per esempio, il codice di uscita 1 indica errori vari, come “dividere per zero”
Il processo padre di qualsiasi processo figlio aspetta lo stato di uscita del figlio. E dopo aver ricevuto lo stato di uscita del figlio, pulisce il processo figlio dalla tabella dei processi e libera le risorse ad esso assegnate. Ecco perché diventa obbligatorio per i programmi C e C++ (che sono prcoessi del sistema operativo) passare il suo stato di uscita da main esplicitamente o implicitamente.
Tuttavia, il programma java viene eseguito come ‘main thread’ nella JVM. Il programma Java non è nemmeno un processo del sistema operativo direttamente. Non c’è interazione diretta tra il programma Java e il sistema operativo. Non c’è assegnazione diretta di risorse al programma Java direttamente, o il programma Java non occupa alcun posto nella tabella dei processi. A chi dovrebbe restituire lo stato di uscita, quindi. Ecco perché il metodo main di Java è progettato per non restituire int o lo stato di uscita.
Ma la JVM è un processo di un sistema operativo, e la JVM può essere terminata con un certo stato di uscita. Con l’aiuto di java.lang.Runtime.exit(int status) o System.exit(int status)