Main() je početna točka za JVM da započne izvršavanje Java programa. Bez metode main(), JVM neće izvršiti program. Sintaksa metode main() je:
javnost: To je specifikator pristupa. Trebali bismo koristiti ključnu riječ public prije main() metode kako bi JVM mogao identificirati točku izvođenja programa. Ako prije metode main() koristimo private, protected i default, ona neće biti vidljiva JVM-u.
statički: Metodu možete učiniti statičnom pomoću ključne riječi static. Trebali bismo pozvati main() metodu bez stvaranja objekta. Statičke metode su metode koje se pozivaju bez stvaranja objekata, tako da ne trebamo nikakav objekt da pozovemo main() metodu.
poništiti: U Javi svaka metoda ima povratni tip. Ključna riječ Void potvrđuje prevoditelju da metoda main() ne vraća nikakvu vrijednost.
glavni(): To je zadani potpis koji je unaprijed definiran u JVM-u. Poziva ga JVM da izvrši program red po red i završi izvršenje nakon završetka ove metode. Također možemo preopteretiti main() metodu.
Argumenti niza []: Main() metoda također prihvaća neke podatke od korisnika. Prihvaća skupinu nizova, koja se naziva niz nizova. Koristi se za držanje argumenata naredbenog retka u obliku vrijednosti niza.
main(String args[])
Ovdje je agrs[] naziv niza i tipa je String. To znači da može pohraniti grupu nizova. Zapamtite, ovaj niz također može pohraniti grupu brojeva, ali samo u obliku niza. Vrijednosti proslijeđene metodi main() nazivaju se argumentima. Ovi argumenti su pohranjeni u nizu args[], pa se za njega općenito koristi naziv args[].
Što se događa ako se metoda main() napiše bez String args[]?
Program će se prevesti, ali se neće pokrenuti jer JVM neće prepoznati main() metodu. Imajte na umu da JVM uvijek traži main() metodu s nizom tipa niza kao parametrom.
Proces izvršenja
Prvo, JVM izvršava statički blok, zatim izvršava statičke metode, a zatim stvara objekt koji je potreban programu. Konačno, izvršava metode instance. JVM izvršava statički blok na temelju najvišeg prioriteta. To znači da JVM prvo ide u statički blok čak i prije nego što traži main() metodu u programu.
Primjer
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Izlaz:
Static block Static method
Primjećujemo da JVM prvo izvršava statički blok, ako je prisutan u programu. Nakon toga traži metodu main(). Ako main() metoda nije pronađena, daje pogrešku.
Primjer
Program koji nema main() metodu daje pogrešku tijekom izvođenja.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Izlaz:
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
Dakle, main() metodu treba uvijek napisati kao:
public static void main(String args[])
Možemo zamijeniti public i static i napisati to na sljedeći način:
static public void main(String args[])
Također možemo koristiti različito ime za polje tipa String i napisati ga kao:
static public void main(String[] x)
Različiti načini pisanja metode main() su:
static public void main(String []x) static public void main(String...args)
String...args: Omogućuje metodi prihvaćanje nula ili više argumenata. Između niza i niza trebaju biti točno tri točke; inače daje grešku.
Primjer
Program koji nema main() metodu, ali se uspješno kompilira i izvodi.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Izlaz:
Java
Preopterećenje metode main().
Također možemo preopteretiti main() metodu. Možemo definirati bilo koji broj main() metoda u klasi, ali potpis metode mora biti drugačiji.
Primjer
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); } }
Izlaz:
java strukture podataka
main method invoked 6