Metoda main() se nahaja na začetku in koncu vsakega programa v Javi. Med iz­va­ja­njem se upo­šte­va­jo samo izjave, ki so v njenem obsegu. Zato je tako pomembno, da pazimo na vsako najmanjšo po­drob­nost sintakse metode. Če je ne­pra­vil­na, program ne bo izveden.

Kaj je metoda main() v Javi?

Ne glede na to, kakšen projekt želite izvesti s pro­gram­skim jezikom ali kakšen kratek ali obsežen kodek upo­ra­blja­te zanj, v Javi se vsaka apli­ka­ci­ja začne z metodo main(). Če ta ni na voljo, kodek ni mogoče izvesti. Preden se ta prenese v main(), se Java Virtual Machine (JVM) naloži v pomnilnik in koda se kompilira. Ko so ti koraki za­klju­če­ni, se koda preveri z metodo Java main(). Nato se upa, da se izvede pravilno. Načeloma je mogoče uporabiti tudi več teh metod, pri čemer je največ ena glavna metoda na razred.

Kakšna je sintaksa metode Java main()?

Sintaksa metode Java main() je vedno enaka. Se­sta­vlje­na je iz več pomembnih delov in izgleda takole:

public static void main(String[] args)
java

Ti sestavni deli iz­pol­nju­je­jo naslednje funkcije:

  • public: Ta kom­po­nen­ta za­go­ta­vlja, da je razred dostopen tudi od zunaj.
  • static: Ta del metodo deklarira kot statično, kar pomeni, da lahko obstaja, ne da bi bil vnaprej ustvarjen objekt določene razreda.
  • void: To za­go­ta­vlja, da metoda main() v Javi ne mora vrniti vrednosti. main: To je tisto, kar Java Virtual Machine uporablja za iden­ti­fi­ka­ci­jo metode, ko izvaja program.
  • String[] args: To je niz, v katerem so shranjeni in prejeti argumenti ukazne vrstice.

Zakaj so posamezne sestavine main() pomembne?

Da bi bolje razumeli, kako deluje metoda Java main() in zakaj so vse kom­po­nen­te tako pomembne, jih bomo v na­sle­dnjih poglavjih pre­gle­da­li posamično. Naj­po­memb­ne­je je, da vam bomo pokazali, kaj se zgodi, če manjka del podpisa. Za to bomo izbrali zelo preprost primer kode, ki ga bomo izpisali z ukazom Java System.out.println.

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

Ko izvedete ta kod, boste prejeli naslednji izpis:

Here is your sample text.
java

public

public deluje kot spe­ci­fi­ka­tor dostopa in si­gna­li­zi­ra Java Virtual Machine, kje se izvaja ustrezen program. Obstajajo tudi drugi mo­di­fi­ca­tor­ji dostopa, kot so default, private in protected. Če pa jih uporabite z metodo main() v Javi, boste prejeli sporočilo o napaki:

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

Ustrezno vprašanje je:

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

To sporočilo o napaki pomeni, da metoda ni javno dostopna.

static

Ključna beseda static potrjuje, da je upo­ra­blje­na metoda statična. To pomeni, da se lahko uporablja neodvisno od primerov razredov. Če od­stra­ni­te to kom­po­nen­to, bo koda izgledala takole:

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

Tukaj se prikaže tudi sporočilo o napaki:

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

void

void je ključna beseda, ki določa, da metoda main() v Javi ne sme vrniti nobenih vrednosti. Ker je main() začetni in končni točki programa v Javi, upo­da­blja­nje ni potrebno. Tako izgleda koda brez void:

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

To je sporočilo o napaki, ki ga prejmete, če izpustite 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

Za vsak program v Javi JVM najprej poišče iden­ti­fi­ka­tor main. Ta označuje, kje naj se izvajanje začne in konča. Takoj ko metoda main() v Javi konča izvajanje, se program zaključi. Zato podpis nikoli ne sme biti spre­me­njen ali dopolnjen. Tukaj je primer, kako izgleda sprememba podpisa:

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

Ker JVM ne more najti iden­ti­fi­ka­tor­ja, bo program takoj prekinil in izdal naslednje sporočilo o napaki:

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

Niz String[] args ustreza razredu java.lang.String in vsebuje podatke, ki jih shranjuje kot nizovne vrednosti. Če to spe­ci­fi­ka­ci­jo izpustite, bo koda izgledala takole:

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

Brez argumenta metoda Java main() ne more biti izvedena. Po­sle­dič­no boste ponovno prejeli naslednje sporočilo o napaki:

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

Kakšne so al­ter­na­tiv­ne pisave?

Primer kode, prikazan tukaj, je bil napisal v skladu z naj­po­go­stej­šo sintakso. Vendar ga lahko enostavno pri­la­go­di­te, da boste imeli boljši pregled. Na primer, lahko kvadratne oklepaje postavite ne­po­sre­dno za args. Tako bi izgledalo:

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

Argumente lahko shranite tudi kot spre­men­lji­ve argumente (varargs). Za to morate uporabiti tropičje:

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

e279a09d81cf2d9a80f3ef29e7d04b0b

9355e88a23274d30eaac66bea1050fdd

d08ef900be5f8a1e6a80fab0895b7da2

ffcbdc9a7455426c4bf5f7060e972480

4748e69e1509025f6b105d9f3b402d2d

1a5178e6461bc0819cefc3a9cc63948d

Go to Main Menu