# Kako uporabljati metodo Java main():

Metoda `main()` se nahaja na začetku in koncu vsakega programa v Javi. Med izvajanjem se upoštevajo samo izjave, ki so v njenem obsegu. Zato je tako pomembno, da pazimo na vsako najmanjšo podrobnost sintakse metode. Če je nepravilna, program ne bo izveden.

## Kaj je metoda `main()` v Javi?

Ne glede na to, kakšen projekt želite izvesti s programskim jezikom ali kakšen kratek ali obsežen kodek uporabljate zanj, v Javi se vsaka aplikacija 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 zaključeni, 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. Sestavljena je iz več pomembnih delov in izgleda takole:

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

Ti sestavni deli izpolnjujejo naslednje funkcije:

- `public`: Ta komponenta zagotavlja, 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 zagotavlja, da metoda `main()` v Javi ne mora vrniti vrednosti. `main`: To je tisto, kar Java Virtual Machine uporablja za identifikacijo 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 komponente tako pomembne, jih bomo v naslednjih poglavjih pregledali posamično. Najpomembneje 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`.

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

Ko izvedete ta kod, boste prejeli naslednji izpis:

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

### `public`

`public` deluje kot specifikator dostopa in signalizira Java Virtual Machine, **kje se izvaja ustrezen program**. Obstajajo tudi drugi modificatorji dostopa, kot so default, private in protected. Če pa jih uporabite z metodo `main()` v Javi, boste prejeli sporočilo o napaki:

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

Ustrezno vprašanje je:

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

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

### `static`

Ključna beseda `static` potrjuje, da je uporabljena metoda statična. To pomeni, da se lahko uporablja **neodvisno od primerov razredov**. Če odstranite to komponento, bo koda izgledala takole:

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

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

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

### `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, upodabljanje ni potrebno. Tako izgleda koda brez `void`:

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

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

Za vsak program v Javi JVM najprej poišče identifikator `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 spremenjen ali dopolnjen. Tukaj je primer, kako izgleda sprememba podpisa:

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

Ker JVM ne more najti identifikatorja, bo program takoj prekinil in izdal naslednje sporočilo o napaki:

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

Niz `String[] args` ustreza razredu **java.lang.String** in vsebuje podatke, ki jih shranjuje kot nizovne vrednosti. Če to specifikacijo izpustite, bo koda izgledala takole:

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

Brez argumenta metoda Java `main()` ne more biti izvedena. Posledično boste ponovno prejeli naslednje sporočilo o napaki:

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

## Kakšne so alternativne pisave?

Primer kode, prikazan tukaj, je bil napisal v skladu z najpogostejšo sintakso. Vendar ga lahko enostavno prilagodite, da boste imeli boljši pregled. Na primer, lahko kvadratne oklepaje postavite neposredno za `args`. Tako bi izgledalo:

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

Argumente lahko shranite tudi kot spremenljive argumente (varargs). Za to morate uporabiti tropičje:

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

Tip V našem digitalnem vodniku lahko najdete še vrsto drugih člankov o Javi. Preberete lahko, kako [se Java in JavaScript primerjata](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/java-proti-javascript/), ali pa se naučite več o Java operatorjih.


This is a markdown version of: [https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/java-metoda-main/](https://www.ionos.com/sl-si/digitalguide/spletne-strani/razvoj-spletnih-strani/java-metoda-main/) for AI/LLM consumption.