Meetod main() asub Java iga programmi alguses ja lõpus. Täitmise ajal võetakse arvesse ainult selle ulatuses olevaid avaldusi. Seetõttu on nii oluline pöörata tä­he­le­panu meetodi süntaksi igale detailile. Kui see on vale, programmi ei täideta.

Mis on Java main() meetod?

Sõltumata sellest, millist projekti soovite prog­ram­mee­ri­mis­kee­lega ellu viia või millist lühikest või ula­tus­likku koodi selleks kasutate, algab Java-s iga rakendus main() -meetodiga. Kui see pole kät­te­saa­dav, ei saa koodi täita. Enne kui see edas­ta­takse main(), laa­di­takse Java vir­tuaal­ma­sin (JVM) mällu ja kood kom­pi­lee­ri­takse. Kui need sammud on tehtud, kont­rol­li­takse koodi Java main() meetodiga. Seejärel loo­de­ta­vasti täi­de­takse see kor­rekt­selt. Põ­hi­mõt­te­li­selt on võimalik kasutada ka mitut sellist meetodit, kusjuures mak­si­maal­selt on lubatud üks peamine meetod klassi kohta.

Mis on Java meetodi main() süntaks?

Java main() meetodi süntaks on alati sama. See koosneb mitmest olulisest osast ja näeb välja järgmine:

public static void main(String[] args)
java

Need kom­po­nen­did täidavad järgmisi funkt­sioone:

  • public: See komponent tagab, et klassile on juur­de­pääs ka väl­jast­poolt.
  • static: See osa dek­la­ree­rib meetodi staa­ti­li­seks, mis tähendab, et see võib ek­sis­tee­rida ilma, et eelnevalt oleks loodud konk­reetse klassi objekt.
  • void: See tagab, et Java meetod main() ei pea väärtust tagastama. main: Seda kasutab Java vir­tuaal­ma­sin meetodi iden­ti­fit­see­ri­miseks programmi täitmisel.
  • String[] args: See on massiiv, kus sal­ves­ta­takse ja vastu võetakse käsurea ar­gu­men­did.

Miks on main() ük­sik­kom­po­nen­did olulised?

Et paremini mõista, kuidas Java main() meetod töötab ja miks kõik kom­po­nen­did on nii olulised, vaatame neid järg­mis­tes punktides eraldi. Kõige olulisem on see, et näitame teile, mis juhtub, kui osa all­kir­jast puudub. Selleks valime väga lihtsa koo­di­näite, mille väl­jas­tame Java käsuga System.out.println.

public class main {
	public static void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Kui te selle koodi käivitate, saate järgmise väljundi:

Here is your sample text.
java

public

public toimib juur­de­pääsu määrajana ja annab Java vir­tuaal­ma­si­nale teada, kus vastav programm täi­de­takse. On ka teisi juur­de­pääsu määrajaid, nagu default, private ja protected. Kui aga kasutate neid Java main() meetodiga, saate veateate:

public class main {
	private static void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Vastav küsimus on:

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
java

See veateade näitab, et meetodile puudub avalik juur­de­pääs.

static

Võtmesõna static kinnitab, et kasutatav meetod on staa­ti­line. See tähendab, et seda saab kasutada sõl­tu­ma­tult klassi ins­tant­si­dest. Kui see komponent eemaldada, näeb kood välja järgmine:

public class main {
	public void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Siin kuvatakse ka veateade:

Error: Main method is not static in class test, please define the main method as:
public static void main(String[] args)
java

void

void on märksõna, mis määrab, et Java meetod main() ei tohi tagastada ühtegi väärtust. Kuna main() on Java programmi algus- ja lõpp-punkt, ei ole ren­der­da­mine vajalik. Niimoodi näeb kood välja ilma void:

public class main {
	public static main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

See on veateade, mis kuvatakse, kui jätate välja void:

Error: Main method must return a value of type void in class Main, please define the main method as:
public static void main(String[] args)
java

main

Iga Java-programmi puhul otsib JVM esmalt iden­ti­fi­kaa­to­rit main. See näitab, kus täitmine peaks algama ja lõppema. Niipea kui Java-meetod main() on täitmise lõpetanud, lõpetab programm töötamise. Seetõttu ei tohi allkirja kunagi muuta ega sellele midagi lisada. Siin on näide, kuidas allkirja muutmine välja näeb:

public class main {
	public static void replacementMain(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Kuna JVM ei leia iden­ti­fi­kaa­to­rit, lõpetab ta programmi otse ja kuvab järgmise veateate:

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
java

String[] args

Massiiv String[] args vastab klassile java.lang.String ja sisaldab andmeid, mida see salvestab string-väär­tus­tena. Kui see spet­si­fi­kat­sioon välja jätta, näeb kood välja järgmine:

public class main {
	public static void main() {
		System.out.println("Here is your sample text.");
	}
}
java

Ilma ar­gu­men­dita ei saa Java main() meetodit täita. Selle tu­le­mu­sena kuvatakse taas järgmine veateade:

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
java

Millised on al­ter­na­tiiv­sed kir­ja­pil­did?

Siin näidatud koo­di­näide on kir­ju­ta­tud kõige levinuma süntaksi järgi. Saate seda aga hõlpsasti kohandada, et saada parem ülevaade. Näiteks võite paigutada nurk­sul­gud otse args järele. Siis näeks see välja järgmine:

public static void main(String args[]) { }
java

Argumente saab sal­ves­tada ka muutujate ar­gu­men­ti­dena (varargs). Selleks tuleb kasutada ellipsi:

public static void main(String...args) { }
java

e279a09d81cf2d9a80f3ef29e7d04b0b

9355e88a23274d30eaac66bea1050fdd

d08ef900be5f8a1e6a80fab0895b7da2

ffcbdc9a7455426c4bf5f7060e972480

8fce6c9a4a17c5f970c34ae8c937fac1

Go to Main Menu