# Java-menetelmän main() käyttö:

`main()` on jokaisen Java-ohjelman alussa ja lopussa. Vain sen soveltamisalaan kuuluvat lauseet otetaan huomioon suorituksen aikana. Siksi on niin tärkeää kiinnittää huomiota menetelmän syntaksin jokaiseen yksityiskohtaan. Jos se on virheellinen, ohjelmaa ei suoriteta.

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

Riippumatta siitä, minkä projektin haluat toteuttaa ohjelmointikielellä tai kuinka tiivistä tai laajaa koodia käytät siihen, Java-kielessä jokainen sovellus alkaa `main()`. Jos se ei ole käytettävissä, koodia **ei voida suorittaa**. Ennen kuin tämä siirretään `main()`, Java Virtual Machine (JVM) ladataan muistiin ja koodi käännetään. Kun nämä vaiheet on suoritettu, koodi tarkistetaan Java `main()` -metodilla. Sen jälkeen se toivottavasti suoritetaan oikein. Periaatteessa on myös mahdollista käyttää useita näistä metodeista, jolloin enimmäismäärä on yksi päämetodi luokkaa kohti.

## Mikä on Java-menetelmän `main()` syntaksi?

Java `main()` -menetelmän syntaksi on aina sama. Se koostuu useista tärkeistä osista ja näyttää tältä:

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

Nämä komponentit suorittavat seuraavat toiminnot:

- `public`: Tämä komponentti varmistaa, että luokkaan pääsee myös ulkopuolelta.
- `static`: Tämä osa määrittelee menetelmän staattiseksi, mikä tarkoittaa, että se voi olla olemassa ilman, että tiettyä luokkaa edeltävä objekti on luotu etukäteen.
- `void`: Tämä varmistaa, että Java-menetelmän `main()` ei tarvitse palauttaa arvoa. `main`: Java Virtual Machine käyttää tätä tunnistamaan menetelmän, kun se suorittaa ohjelmaa.
- `String[] args`: Tämä on taulukko, johon komentoriviparametrit tallennetaan ja vastaanotetaan.

## Miksi `main()`:n yksittäiset komponentit ovat tärkeitä?

Jotta voimme paremmin ymmärtää Java `main()` -menetelmän toimintaa ja kaikkien komponenttien tärkeyttä, tarkastelemme niitä yksitellen seuraavissa osioissa. Tärkeintä on, että näytämme, mitä tapahtuu, jos **osa allekirjoituksesta puuttuu**. Tätä varten valitsemme hyvin yksinkertaisen koodiesimerkin, jonka tulostamme Java-komennolla `System.out.println`.

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

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

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

### `public`

`public` toimii pääsyoikeuden määrittäjänä ja ilmoittaa Java-virtuaalikoneelle, **missä vastaava ohjelma suoritetaan**. On myös muita pääsyoikeuden määrittäjiä, kuten default, private ja protected. Jos kuitenkin käytät näitä Java-kielessä `main()` kanssa, saat virheilmoituksen:

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

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

Tämä virheilmoitus tarkoittaa, että menetelmään ei ole julkista pääsyä.

### `static`

Avainsana `static` vahvistaa, että käytetty menetelmä on staattinen. Tämä tarkoittaa, että sitä voidaan käyttää **luokkien instansseista riippumatta**. Jos poistat tämän komponentin, koodi näyttää tältä:

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

Tässäkin tapauksessa saat virheilmoituksen:

```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 avainsana, joka määrittää, että Java-kielessä `main()` **ei saa palauttaa mitään arvoja**. Koska `main()` on Java-ohjelman alku- ja loppupiste, renderointi on tarpeetonta. Näin koodi näyttää ilman `void`:

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

Tämä on virheilmoitus, jonka saat, jos jätät `void` pois:

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

Jokaisessa Java-ohjelmassa JVM etsii ensin tunnisteen `main`. Se osoittaa, **mistä suoritus alkaa ja mihin se päättyy**. Heti kun Java-menetelmä `main()` on suorittanut tehtävänsä, ohjelma päättyy. Siksi allekirjoitusta ei saa koskaan muuttaa tai siihen ei saa lisätä mitään. Tässä on esimerkki allekirjoituksen muutoksesta:

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

Koska JVM ei löydä tunnistetta, se lopettaa ohjelman suoraan ja antaa seuraavan virheilmoituksen:

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

`String[] args` vastaa **java.lang.String-** luokkaa ja sisältää tiedot, jotka se tallentaa merkkijonoarvoina. Jos jätät tämän määrityksen pois, koodi näyttää tältä:

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

Ilman argumenttia Java `main()` -menetelmää ei voida suorittaa. Tämän seurauksena saat jälleen seuraavan virheilmoituksen:

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

## Mitä vaihtoehtoisia kirjoitusasuja on olemassa?

Tässä esitetty koodiesimerkki on kirjoitettu yleisimmin käytetyn syntaksin mukaisesti. Voit kuitenkin helposti muokata sitä, jotta saat paremman yleiskuvan. Voit esimerkiksi sijoittaa hakasulkeet suoraan `args` jälkeen. Näin se näyttäisi:

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

Voit myös tallentaa argumentit muuttujina (varargs). Tätä varten sinun on käytettävä ellipsia:

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

Vinkki Digitaalisesta oppaastamme löydät useita muita Java-aiheisia artikkeleita. Voit lukea [Java- ja JavaScript-kielien vertailusta](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-vs-javascript/) tai oppia lisää Java-operaattoreista.


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-metodi-main/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/java-metodi-main/) for AI/LLM consumption.