# Kuinka käyttää for-each-silmukoita Java-kielessä

For-each Java-silmukan avulla voit selata **taulukoita ja kokoelmia** nopeammin ja turvallisemmin, välttää virheitä ja parantaa koodin luettavuutta. Tässä opetusohjelmassa selitämme for-each-menetelmän rakenteen ja edut tarkemmin ja näytämme, miten silmukkaa käytetään koodissasi.

## Mihin for-each Java-silmukkaa käytetään?

For-each-silmukkaa käytetään monissa tilanteissa, joissa Java-kehittäjät joutuvat työskentelemään taulukoiden kanssa. Yleinen käyttötarkoitus on esimerkiksi taulukon tiettyjen elementtien tulostaminen tai etsiminen. For-each-silmukkaa voidaan käyttää myös ArrayList-tyyppisenä toteutetun luettelon elementtien läpikäymiseen. Jokaisella läpikäynnillä voit suorittaa **automaattisia manipulointeja** tavallisilla Java-operaattoreilla ilman, että joudut kirjoittamaan erillistä lauseketta jokaiselle elementille.

Toisin kuin Java-kielessä käytettävässä for-silmukassa, for-each-silmukassa **ei tarvitse ottaa huomioon taulukon indeksiä tai kokoa**. Näiden seikkojen huomioimatta jättäminen tarkoittaa, että vältytään riskiltä, että indeksi olisi voimassa olevan alueen ulkopuolella. For-each-silmukka käyttää sisäisesti iteraattoria kutsumaan taulukon tai luettelon jokaisen elementin yksi kerrallaan. Iteraattori laskee automaattisesti taulukon tai luettelon läpi ja lopettaa silmukan, kun kaikki elementit on käyty läpi.

Jos kuitenkin tarvitset indeksin pääsyn seuraavan tai edellisen elementin muokkaamiseen, voi olla järkevämpää käyttää **for-silmukkaa** tai **while-silmukkaa**.

## Mikä on for-each Java-silmukan syntaksi?

Java-kielessä for-each-silmukan perusrakenteet ovat seuraavat:

```Java
for (type item : array | collection) {
// code block
}
```

- `array/collection`: Taulukon tai kokoelman nimi
- `item`: Jokainen taulukon tai kokoelman elementti on määritetty tälle muuttujalle
- `type`: Taulukon tai kokoelman tietotyyppi

Silmukan sisällä koodilohko suoritetaan jokaisella iteraatiolla.

## Esimerkkejä for-each Java-silmukan käytöstä

Alla näytämme, kuinka for-each-menetelmää käytetään **näytön tulostuksen ja aritmeettisten operaatioiden** avulla.

### Elementtien tulostaminen konsoliin

For-each-silmukan avulla voit näyttää taulukon tai kokoelman jokaisen elementin **näytöllä**.

```Java
class Main {
    public static void main(String[] args) {
        // array
        String[] names = {"Sophie", "Mia", "Harrison", "Elliot", "Melissa"};
        // for each loop
        for (String name: names) {
            System.out.println(name);
        }
    }
}
In the console, we get the output:
```Java
Sophie
Mia
Harrison
Elliot
Melissa
```

</div>On myös mahdollista tulostaa luettelon elementit analogisesti. Silmukan lähdekoodi pysyy muuttumattomana.

<div class="prism-container position-relative my-4" data-ctype="commonmark_content">```Java
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
// list
ArrayList names = new ArrayList();
names.add( "Sophie" );
names.add( "Mia" );
names.add( "Harrison" );
names.add( "Elliot" );
names.add( "Melissa" );
// for each loop
for(String name: names){
System.out.println(name);
}
}
}
```

</div>Jokaiselle nimelle luodaan merkkijono luettelosta:

<div class="prism-container position-relative my-4" data-ctype="commonmark_content">```Java
Sophie
Mia
Harrison
Elliot
Melissa
```

</div>### Taulukon tai kokoelman elementtien summan laskeminen

Java-menetelmä for-each helpottaa aritmeettisten operaatioiden, kuten taulukon tai luettelon elementtien yhteenlaskemisen, suorittamista. Operaattorit on linkitetty muuttujaan, joka toimii **paikanpitäjänä jokaiselle elementille** silmukan koodilohkossa.

<div class="prism-container position-relative my-4" data-ctype="commonmark_content">```Java
class Main {
public static void main(String[] args) {
// array
int[] numbers = {10, 34, 7, 19, -28};
int sum = 0;
// addition
for (int number: numbers) {
sum += number;
}
System.out.println("Result = " + sum);
}
}
```

</div>Taulukon numerot lisätään järjestyksessä muuttujaan `sum`, joka on aiemmin määritelty silmukan ulkopuolella. Tulostus on:

<div class="prism-container position-relative my-4" data-ctype="commonmark_content">```Java
Result = 42
```


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