# Kuidas kasutada Java meetodit main():

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ähelepanu meetodi süntaksi igale detailile. Kui see on vale, programmi ei täideta.

## Mis on Java `main()` meetod?

Sõltumata sellest, millist projekti soovite programmeerimiskeelega ellu viia või millist lühikest või ulatuslikku koodi selleks kasutate, algab Java-s iga rakendus `main()` -meetodiga. Kui see pole kättesaadav, **ei saa** koodi **täita**. Enne kui see edastatakse `main()`, laaditakse Java virtuaalmasin (JVM) mällu ja kood kompileeritakse. Kui need sammud on tehtud, kontrollitakse koodi Java `main()` meetodiga. Seejärel loodetavasti täidetakse see korrektselt. Põhimõtteliselt on võimalik kasutada ka mitut sellist meetodit, kusjuures maksimaalselt 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:

```java
public static void main(String[] args)
```

Need komponendid täidavad järgmisi funktsioone:

- `public`: See komponent tagab, et klassile on juurdepääs ka väljastpoolt.
- `static`: See osa deklareerib meetodi staatiliseks, mis tähendab, et see võib eksisteerida ilma, et eelnevalt oleks loodud konkreetse klassi objekt.
- `void`: See tagab, et Java meetod `main()` ei pea väärtust tagastama. `main`: Seda kasutab Java virtuaalmasin meetodi identifitseerimiseks programmi täitmisel.
- `String[] args`: See on massiiv, kus salvestatakse ja vastu võetakse käsurea argumendid.

## Miks on `main()` üksikkomponendid olulised?

Et paremini mõista, kuidas Java `main()` meetod töötab ja miks kõik komponendid on nii olulised, vaatame neid järgmistes punktides eraldi. Kõige olulisem on see, et näitame teile, mis juhtub, kui **osa allkirjast puudub**. Selleks valime väga lihtsa koodinäite, mille väljastame Java käsuga `System.out.println`.

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

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

```java
Here is your sample text.
```

### `public`

`public` toimib juurdepääsu määrajana ja annab Java virtuaalmasinale teada, **kus vastav programm täidetakse**. On ka teisi juurdepääsu määrajaid, nagu default, private ja protected. Kui aga kasutate neid Java `main()` meetodiga, saate veateate:

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

Vastav küsimus on:

```java
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
```

See veateade näitab, et meetodile puudub avalik juurdepääs.

### `static`

Võtmesõna `static` kinnitab, et kasutatav meetod on staatiline. See tähendab, et seda saab kasutada **sõltumatult klassi instantsidest**. Kui see komponent eemaldada, näeb kood välja järgmine:

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

Siin kuvatakse ka veateade:

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

### `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 renderdamine vajalik. Niimoodi näeb kood välja ilma `void`:

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

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

```java
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)
```

### `main`

Iga Java-programmi puhul otsib JVM esmalt identifikaatorit `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:

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

Kuna JVM ei leia identifikaatorit, lõpetab ta programmi otse ja kuvab järgmise veateate:

```java
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
```

### `String[] args`

Massiiv `String[] args` vastab klassile **java.lang.String** ja sisaldab andmeid, mida see salvestab string-väärtustena. Kui see spetsifikatsioon välja jätta, näeb kood välja järgmine:

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

Ilma argumendita ei saa Java `main()` meetodit täita. Selle tulemusena kuvatakse taas järgmine veateade:

```java
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
```

## Millised on alternatiivsed kirjapildid?

Siin näidatud koodinäide on kirjutatud kõige levinuma süntaksi järgi. Saate seda aga hõlpsasti kohandada, et saada parem ülevaade. Näiteks võite paigutada nurksulgud otse `args` järele. Siis näeks see välja järgmine:

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

Argumente saab salvestada ka muutujate argumentidena (varargs). Selleks tuleb kasutada ellipsi:

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

Tip Meie digitaalsest juhendist leiate mitmeid teisi artikleid Java kohta. Saate lugeda [Java ja JavaScripti võrdlust](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/java-vs-javascript/) või õppida rohkem Java operaatorite kohta.


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/java-meetod-main/](https://www.ionos.com/et-ee/digitalguide/veebisaidid/veebiarendus/java-meetod-main/) for AI/LLM consumption.