main() on jokaisen Java-ohjelman alussa ja lopussa. Vain sen so­vel­ta­mi­sa­laan kuuluvat lauseet otetaan huomioon suo­ri­tuk­sen aikana. Siksi on niin tärkeää kiin­nit­tää huomiota me­ne­tel­män syntaksin jokaiseen yk­si­tyis­koh­taan. Jos se on vir­heel­li­nen, ohjelmaa ei suoriteta.

Mikä on Java-kielessä käytetty main()?

Riip­pu­mat­ta siitä, minkä projektin haluat toteuttaa oh­jel­moin­ti­kie­lel­lä tai kuinka tiivistä tai laajaa koodia käytät siihen, Java-kielessä jokainen sovellus alkaa main(). Jos se ei ole käy­tet­tä­vis­sä, koodia ei voida suorittaa. Ennen kuin tämä siir­re­tään main(), Java Virtual Machine (JVM) ladataan muistiin ja koodi kään­ne­tään. Kun nämä vaiheet on suo­ri­tet­tu, koodi tar­kis­te­taan Java main() -metodilla. Sen jälkeen se toi­vot­ta­vas­ti suo­ri­te­taan oikein. Pe­ri­aat­tees­sa on myös mah­dol­lis­ta käyttää useita näistä me­to­deis­ta, jolloin enim­mäis­mää­rä on yksi päämetodi luokkaa kohti.

Mikä on Java-me­ne­tel­män main() syntaksi?

Java main() -me­ne­tel­män syntaksi on aina sama. Se koostuu useista tärkeistä osista ja näyttää tältä:

public static void main(String[] args)
java

Nämä kom­po­nen­tit suo­rit­ta­vat seuraavat toiminnot:

  • public: Tämä kom­po­nent­ti varmistaa, että luokkaan pääsee myös ul­ko­puo­lel­ta.
  • static: Tämä osa mää­rit­te­lee me­ne­tel­män staat­ti­sek­si, mikä tar­koit­taa, että se voi olla olemassa ilman, että tiettyä luokkaa edeltävä objekti on luotu etukäteen.
  • void: Tämä varmistaa, että Java-me­ne­tel­män main() ei tarvitse palauttaa arvoa. main: Java Virtual Machine käyttää tätä tun­nis­ta­maan me­ne­tel­män, kun se suorittaa ohjelmaa.
  • String[] args: Tämä on taulukko, johon ko­men­to­ri­vi­pa­ra­met­rit tal­len­ne­taan ja vas­taa­no­te­taan.

Miksi main():n yk­sit­täi­set kom­po­nen­tit ovat tärkeitä?

Jotta voimme paremmin ymmärtää Java main() -me­ne­tel­män toimintaa ja kaikkien kom­po­nent­tien tärkeyttä, tar­kas­te­lem­me niitä yk­si­tel­len seu­raa­vis­sa osioissa. Tärkeintä on, että näytämme, mitä tapahtuu, jos osa al­le­kir­joi­tuk­ses­ta puuttuu. Tätä varten va­lit­sem­me hyvin yk­sin­ker­tai­sen koo­die­si­mer­kin, jonka tu­los­tam­me Java-ko­men­nol­la System.out.println.

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

Kun suoritat tämän koodin, saat seuraavan tuloksen:

Here is your sample text.
java

public

public toimii pää­sy­oi­keu­den mää­rit­tä­jä­nä ja ilmoittaa Java-vir­tu­aa­li­ko­neel­le, missä vastaava ohjelma suo­ri­te­taan. On myös muita pää­sy­oi­keu­den mää­rit­tä­jiä, kuten default, private ja protected. Jos kuitenkin käytät näitä Java-kielessä main() kanssa, saat vir­heil­moi­tuk­sen:

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

Vastaava kysymys 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

Tämä vir­heil­moi­tus tar­koit­taa, että me­ne­tel­mään ei ole julkista pääsyä.

static

Avainsana static vahvistaa, että käytetty menetelmä on staat­ti­nen. Tämä tar­koit­taa, että sitä voidaan käyttää luokkien ins­tans­seis­ta riip­pu­mat­ta. Jos poistat tämän kom­po­nen­tin, koodi näyttää tältä:

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

Tässäkin ta­pauk­ses­sa saat vir­heil­moi­tuk­sen:

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 avainsana, joka määrittää, että Java-kielessä main() ei saa palauttaa mitään arvoja. Koska main() on Java-ohjelman alku- ja lop­pu­pis­te, ren­de­roin­ti on tar­pee­ton­ta. Näin koodi näyttää ilman void:

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

Tämä on vir­heil­moi­tus, jonka saat, jos jätät void pois:

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

Jo­kai­ses­sa Java-oh­jel­mas­sa JVM etsii ensin tun­nis­teen main. Se osoittaa, mistä suoritus alkaa ja mihin se päättyy. Heti kun Java-menetelmä main() on suo­rit­ta­nut teh­tä­vän­sä, ohjelma päättyy. Siksi al­le­kir­joi­tus­ta ei saa koskaan muuttaa tai siihen ei saa lisätä mitään. Tässä on esimerkki al­le­kir­joi­tuk­sen muu­tok­ses­ta:

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

Koska JVM ei löydä tun­nis­tet­ta, se lopettaa ohjelman suoraan ja antaa seuraavan vir­heil­moi­tuk­sen:

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

String[] args vastaa java.lang.String- luokkaa ja sisältää tiedot, jotka se tallentaa merk­ki­jo­noar­voi­na. Jos jätät tämän mää­ri­tyk­sen pois, koodi näyttää tältä:

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

Ilman ar­gu­ment­tia Java main() -me­ne­tel­mää ei voida suorittaa. Tämän seu­rauk­se­na saat jälleen seuraavan vir­heil­moi­tuk­sen:

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

Mitä vaih­toeh­toi­sia kir­joi­tusa­su­ja on olemassa?

Tässä esitetty koo­die­si­merk­ki on kir­joi­tet­tu ylei­sim­min käytetyn syntaksin mu­kai­ses­ti. Voit kuitenkin helposti muokata sitä, jotta saat paremman yleis­ku­van. Voit esi­mer­kik­si sijoittaa ha­ka­sul­keet suoraan args jälkeen. Näin se näyttäisi:

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

Voit myös tallentaa ar­gu­men­tit muut­tu­ji­na (varargs). Tätä varten sinun on käy­tet­tä­vä ellipsia:

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

9c664ccd7dcc248a5034e1fa751b7de8

Siirry pää­va­lik­koon