Úvod do smyčky For-Every v Javě
Pro každou smyčku byl do Javy zaveden počínaje JDK 5. Jeho cílem je iterovat postupně všemi prvky kolekce nebo pole. Je také v dalších jazycích, jako je C #, kde používá klíčové slovo pro každý. Java však používá klíčové slovo „pro“ pouze k implementaci pro každou smyčku na rozdíl od C #, ale její syntaxe se liší od konvenční smyčky. Tato smyčka pro každou smyčku je v Javě známá také jako vylepšená smyčka.
Syntax
for(type iter_var : Collection) statement_block
Vysvětlení každého z výše uvedených výrazů je následující:
- 'type' označuje datový typ objektů
- 'iter_var' označuje název iterační proměnné, která ukládá každou hodnotu kolekce při iteraci smyčkou.
- 'Kolekce' určuje sbírku nebo pole, skrze které chceme iterovat.
- 'Statement-block' je množina příkazů, které chceme provést pro každou iteraci smyčky.
Je důležité si uvědomit, že smyčka pro každou z nich přistupuje postupně k elementům kolekce / pole, kde ukládá hodnotu každého prvku do iterační proměnné. Následuje vývojový diagram pro každou smyčku.
Jak jste si všimli, existují určité jemné rozdíly mezi pro smyčku a pro každou smyčku. Pro smyčku je třeba předem zadat počet iterací. To však neplatí pro smyčku for-each, protože smyčka iteruje z prvního prvku do posledního prvku kolekce / pole a není nutné specifikovat počet iterací.
Důležitým bodem, který je třeba mít na paměti, je to, že typ určený ve smyčce for-each se musí shodovat s typem prvků v kolekci, protože jinak dojde k problémům s kompatibilitou.
Příklady
Pro smyčku
Najděte průměrný věk skupiny lidí, kteří používají smyčku:
Kód
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
int sum = 0;
System.out.print("Ages of the group are : "); for (int i = 0; i < 10 ; i++)
(
System.out.print(ages(i)+" "); sum += ages(i);
)
System.out.println("\n Average age of the group = " + (sum/10));
)
)
Výstup:
Pro každou smyčku
Chcete-li zjistit průměrný věk skupiny lidí, kteří používají smyčku pro každou z nich:
Kód
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
int sum = 0;
System.out.print("Ages of the group are : "); for (int x : ages)
(
System.out.print(x+" "); sum += x;
)
System.out.println("\n Average age of the group = " + (sum/10));
)
)
Výstup:
Výstup je stejný při použití obou smyček, jak je patrné z výše uvedených obrázků.
Foreach loop pomocí Break Statement
Je možné snížit počet iterací smyčky pro každou smyčku pomocí příkazu break. Například pokud chceme najít součet pouze prvních 5 prvků, můžeme použít příkaz break takto:
Kód
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
int ctr = 0, sum = 0;
System.out.print("Ages of the group are : "); for (int x : ages)
(
System.out.print(x+" ");
)
for (int x : ages)
(
if (ctr == 5) break; sum += x;
ctr += 1;
)
System.out.println("\nSum of age of first 5 people of the group = " + sum);
)
)
Výstup:
Ve výše uvedené smyčce for-each je x iterační proměnná, která ukládá jeden prvek pole na iteraci, který se mění v další iteraci. V první iteraci x ukládá první prvek pole a poslední prvek pole v poslední iteraci. Na rozdíl od smyčky, kde přistupujeme k elementům pole pomocí indexu, pro každou smyčku používá iterační proměnná pro přístup k elementům.
Při použití každé smyčky je třeba postupovat opatrně, protože iterační proměnná dočasně ukládá hodnotu prvku pole, protože je „pouze pro čtení“ a změna jeho hodnoty nemění původní pole. To je v rozporu se smyčkou, kde změna prvku modifikuje původní pole.
Podívejme se na příklad, kdy přidáme 5 ke každému prvku pole. Rozdíl ve výstupu můžeme spatřit v následujícím příkladu kódu:
Pro smyčku s jiným stavem
Kód
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
System.out.print("Elements of the array are : "); for (int i = 0; i < 10; i++)
(
System.out.print(ages(i)+" "); ages(i)+= 5;
)
System.out.print("\nNew elements of the array are : "); for (int i = 0; i < 10; i++)
(
System.out.print(ages(i)+" ");
)
)
)
Výstup:
Výstup pro smyčku ukazující aktualizaci původního pole
Foreach smyčka s jiným stavem
Kód
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
System.out.print("Elements of the array are : "); for (int x : ages)
(
System.out.print(x+" "); x += 5;
)
System.out.print("\nNew elements of the array are : "); for (int x : ages)
(
System.out.print(x+" ");
)
)
)
Výstup:
Výstup smyčky for-each neukazující žádnou aktualizaci původního pole
Co je třeba pamatovat na každou smyčku v javě
- For-Každá smyčka v javě se používá k iteraci skrz prvky pole / kolekce v sekvenci.
- For-Každá smyčka v javě používá iterační proměnnou k iteraci přes kolekci nebo pole prvků.
- Úprava iterační proměnné nemění původní pole / kolekci, protože je pouze pro čtení.
- Typ v smyčce for-each se musí shodovat s typem původních prvků pole / kolekce.
- Smyčka Foreach nepotřebuje specifikovat počet iterací, protože iteruje všechny prvky kolekce.
- Je možné zastavit smyčku for-each pomocí příkazu break.
Doporučené články
Toto je průvodce po smyčce For-Every v javě. Zde diskutujeme smyčku For-Every v javě s implementací kódu různými způsoby, tj. S příkazem break as různými podmínkami. Další informace naleznete také v následujících článcích -
- Tisk pole v Javě
- Smyčky v programování Java
- Zatímco smyčka v Javě
- 3D pole v Javě
- Java Deployment Tools
- 3D pole v C ++
- Pro smyčku v C
- Pole v programování Java