# Loop for each em Java: sintaxe e exemplos

Com o loop for each do Java, pode percorrer **matrizes ou coleções** de forma mais rápida e segura, evitar erros e melhorar a legibilidade do código. Neste tutorial, explicamos a estrutura e as vantagens do método for each em detalhes e mostramos como usar o loop no seu código.

## Para que serve o loop for each do Java?

O loop for each é utilizado em muitas situações em que os programadores Java têm de trabalhar com matrizes. Por exemplo, uma utilização comum é a saída ou pesquisa de elementos específicos de uma matriz. O loop for each também pode ser utilizado para iterar através dos elementos de uma lista implementada como ArrayList. Em cada iteração, é possível realizar **manipulações automáticas** com os operadores Java comuns sem ter de escrever uma instrução separada para cada elemento.

Comparado com o loop for do Java, o método for each do Java **não precisa considerar o índice ou o tamanho da matriz**. Isso evita que um índice esteja fora do intervalo válido. O loop for each utiliza internamente um iterador para abrir sucessivamente cada elemento da matriz ou lista. O iterador conta automaticamente através da matriz ou lista e termina o loop quando todos os elementos tiverem sido percorridos.

No entanto, se precisar de aceder ao índice, por exemplo, para editar o elemento seguinte ou anterior, pode ser mais apropriado utilizar o ciclo **for** ou **while**.

## A sintaxe do loop for each do Java

A sintaxe básica de um loop for each em Java é a seguinte:

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

- `array/collection`: nome da matriz ou coleção
- `item`: cada elemento da matriz ou coleção é atribuído a esta variável
- `type`: tipo de dados da matriz ou coleção

Dentro do loop, o bloco de código é executado para cada iteração.

## Exemplos de utilização do ciclo for each em Java

A seguir, mostramos como utilizar o método for each utilizando **saída no ecrã e operações aritméticas** como exemplo.

### Elementos de saída na consola

Usando o loop for each, pode **mostrar cada elemento de uma matriz ou coleção no ecrã**.

```Java
class Main {
    public static void main(String[] args) {
        // array
        String[] names = {"Sophie", "Tim", "Anna", "John", "Melissa"};
        // for each loop
        for (String name: names) {
            System.out.println(name);
        }
    }
}
```

Na consola, obtemos o seguinte resultado:

```Java
Sophie
Tim
Anna
John
Melissa
```

Da mesma forma, é possível obter os elementos de uma lista. O código-fonte do loop não muda.

```Java
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        // list
        ArrayList<String> names = new ArrayList<String>();
        names.add( "Sophie" );
        names.add( "Tim" );
        names.add( "Anna" );
        names.add( "John" );
        names.add( "Melissa" );
        // for each loop
        for(String name: names){
            System.out.println(name);
        }
    }
}
```

É gerada uma cadeia para cada nome da lista:

```Java
Sophie
Tim
Anna
John
Melissa
```

### Calcular a soma dos elementos de uma matriz ou coleção

Operações aritméticas, como a soma de elementos de uma matriz ou lista, podem ser realizadas de forma fácil e rápida com o método Java for each. Os operadores estão ligados à variável que serve como **marcador de posição para cada elemento** dentro do bloco de código do loop.

```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);
    }
}
```

Os números da matriz são somados em sequência à variável `suma`, previamente declarada fora do loop. O resultado é o seguinte:

```Java
Result = 42
```


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/loop-for-each-em-java/](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/loop-for-each-em-java/) for AI/LLM consumption.