main() è il punto di partenza per JVM per avviare l'esecuzione di un programma Java. Senza il metodo main(), JVM non eseguirà il programma. La sintassi del metodo main() è:
pubblico: È uno specificatore di accesso. Dovremmo usare una parola chiave pubblica prima del metodo main() in modo che JVM possa identificare il punto di esecuzione del programma. Se utilizziamo private, protected e default prima del metodo main(), non sarà visibile a JVM.
statico: È possibile rendere statico un metodo utilizzando la parola chiave static. Dovremmo chiamare il metodo main() senza creare un oggetto. I metodi statici sono il metodo che invoca senza creare gli oggetti, quindi non abbiamo bisogno di alcun oggetto per chiamare il metodo main().
vuoto: In Java, ogni metodo ha il tipo restituito. La parola chiave Void riconosce al compilatore che il metodo main() non restituisce alcun valore.
principale(): È una firma predefinita predefinita nella JVM. Viene chiamato da JVM per eseguire un programma riga per riga e terminare l'esecuzione dopo il completamento di questo metodo. Possiamo anche sovraccaricare il metodo main().
Argomenti stringa[]: Il metodo main() accetta anche alcuni dati dall'utente. Accetta un gruppo di stringhe, chiamato array di stringhe. Viene utilizzato per contenere gli argomenti della riga di comando sotto forma di valori stringa.
main(String args[])
Qui agrs[] è il nome dell'array ed è di tipo String. Significa che può memorizzare un gruppo di stringhe. Ricorda, questo array può anche memorizzare un gruppo di numeri ma solo sotto forma di stringa. I valori passati al metodo main() sono chiamati argomenti. Questi argomenti sono memorizzati nell'array args[], quindi generalmente viene utilizzato il nome args[].
Cosa succede se il metodo main() viene scritto senza String args[]?
Il programma verrà compilato, ma non eseguito, perché JVM non riconoscerà il metodo main(). Ricorda che JVM cerca sempre il metodo main() con un array di tipo stringa come parametro.
Processo di esecuzione
Innanzitutto, JVM esegue il blocco statico, quindi esegue i metodi statici e quindi crea l'oggetto necessario al programma. Infine, esegue i metodi di istanza. JVM esegue un blocco statico in base alla massima priorità. Significa che JVM va prima al blocco statico anche prima di cercare il metodo main() nel programma.
Esempio
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Produzione:
Static block Static method
Osserviamo che JVM esegue prima il blocco statico, se è presente nel programma. Successivamente cerca il metodo main(). Se il metodo main() non viene trovato, restituisce un errore.
Esempio
Un programma che non dispone del metodo main() restituisce un errore in fase di esecuzione.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Produzione:
Error: Main method not found in the class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
Quindi il metodo main() dovrebbe essere sempre scritto come:
public static void main(String args[])
Possiamo scambiare public e static e scriverlo come segue:
static public void main(String args[])
Possiamo anche usare il nome diverso per l'array di tipo String e scriverlo come:
static public void main(String[] x)
Diversi modi di scrivere il metodo main() sono:
static public void main(String []x) static public void main(String...args)
Stringa...argomenti: Consente al metodo di accettare zero o più argomenti. Dovrebbero esserci esattamente tre punti tra String e array; in caso contrario, restituisce un errore.
Esempio
Un programma che non ha un metodo main(), ma viene compilato ed eseguito con successo.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Produzione:
Java
Sovraccarico del metodo main()
Possiamo anche sovraccaricare il metodo main(). Possiamo definire un numero qualsiasi di metodi main() nella classe, ma la firma del metodo deve essere diversa.
Esempio
class OverloadMain { public static void main(int a) //overloaded main method { System.out.println(a); } public static void main(String args[]) { System.out.println('main method incoked'); main(6); } }
Produzione:
tabella in reazione
main method invoked 6