- Java for loop
- What is a for loop
- For loop:
- Syntax of for loop:
- Syntax of new for loop:
- Example of old for loop:
- Example of new for loop:
- Nested for loop
- Nested loop example:
- The for Statement
- Цикл For в Java
- Что такое циклы for?
- Принцип работы цикла for
- Цикл forEach
- Как используются циклы for
- Обратный цикл (от большего к меньшему)
- Несколько переменных и увеличение счетчика в теле цикла
- Досрочное завершение цикла
- Бесконечный цикл
Java for loop
In this tutorial, we will learn about for loop of java, syntax, and a working example along with new enhanced for loop including an example of nested for loop.
What is a for loop
Looping is a concept in the computer programming, which allows programmers or developers to execute a block of statements repeatedly until the looping condition not satisfied. Looping concept helps to perform iterate a group objects or elements and perform operations individually on them, for loop is one of such loops and can be used to iterate objects and perform operations among those objects individually.
For loop:
In Java, for loop is used to execute a block of statements in a loop manner based on the condition of the loop. Consider an example of cooking vegetables on a stove, we will be checking few times whether its properly boiled or need to cook some more and will be checking until its boiled nothing loop of testing until its cooked. To handle this kind of requirement, looping is the best suit to fulfil it.
From Java 5 onwards a new syntax of for loop introduced to iterate arrays and lists, before this new enhanced for loop iterating of list usually done by while loop and arrays iteration will be done by incrementing the index of array using both for loop and while loop.
Syntax of for loop:
The following is the syntax of the for loop for standard iterations.
for(stmt1;stmt2;stmt3) < //statements inside loop >
Syntax of new for loop:
The following is the syntax of new for loop, which allows to iterate group of elements and arrays also with out being checked its size unlike old for loop. This new for loop introduced on Java 5.
for(Object obj: objectList) < //statements inside loop >
Example of old for loop:
public class ForLoopExample public static void main(String[] args) < for(int i=1;i5;i++) < System.out.println(i); > > >
After executing the example program, numbers will be printed from 1 to 5 as shown above. Explanation for the example as following,
- In statement1, initialized and declared a variable i with value as 1 type as int.
- In statement2, checks value of i value should be less than or equals to 5.
- Increments i value with post increment using ++.
- i value as 1 which is less than 5, loop gets executed and prints i value.
- In second execution i value increments by 1 and becomes 2 which is less than 5 and loop gets executed and prints i value.
- Loop continues to execute until the i value becomes greater than 5.
For every single execution of loop, i value incremented by 1 and thereby 5 times loop gets executed.
The next example will be done using new syntax of for and will iterate an array of elements type is a int.
Example of new for loop:
public class ForWithNewSyntax public static void main(String[] args) < int[] array = 1,2,3,4,5,6,10,7>; for (int arr : array) < System.out.println(arr); > > >
After executing the example, the above lines get printed, the following explanation for the output of example.
- Declared an array of int type and assigned random numbers to it.
- Declared for loop to iterate array elements of variable array and assign each element of array to a variable arr.
- For each iteration, element of array assigned to arr variable by incrementing index of array variable.
- Above loop gets executed until the size of the array is less than index of array.
- Total of 8 times loop gets executed and prints array elements.
Following important points to remember about the new for loop syntax.
- New for loop syntax popularly referred as for-each loop.
- New syntax of for loop will be converted into old for loop syntax after compilation of it.
The following is the screen shot of decompiled for each block of the example.
Nested for loop
A for loop embedded into another for loop referred as nested for loop, these nested loops can be used to handle the two or more-dimensional arrays.
In the following example, we will print a * symbol in a right-angle triangle shape.
Nested loop example:
public class NestedForLoopExample public static void main(String[] args) < for (int i=0;i5;i++) < for(int j=0;j<=i;j++) < System.out.print("*"); > System.out.println("\n"); > > >
After executing the example of nested for loop will print the above lines of output, explanation for the output and example as follows.
- We have two for loops, one is inside of another loop.
- Top one will execute 5 times.
- Inside loop will execute until the j variable value greater than parent loop variable i value.
- While i value is 1 print one time * symbol.
- When i value is 2 print two times * symbol and goes till i value becomes not less than 5.
- The above example indicates an array of two dimensional. Array[i][j] with the column and row size as i, j respectively.
In this tutorial, we have learned about the for loop with syntax with working example and step by step explanation of handling two dimensional arrays with nested for loop.
The for Statement
The for statement provides a compact way to iterate over a range of values. Programmers often refer to it as the «for loop» because of the way in which it repeatedly loops until a particular condition is satisfied. The general form of the for statement can be expressed as follows:
for (initialization; termination; increment) < statement(s) >
When using this version of the for statement, keep in mind that:
- The initialization expression initializes the loop; it’s executed once, as the loop begins.
- When the termination expression evaluates to false , the loop terminates.
- The increment expression is invoked after each iteration through the loop; it is perfectly acceptable for this expression to increment or decrement a value.
The following program, ForDemo , uses the general form of the for statement to print the numbers 1 through 10 to standard output:
The output of this program is:
Count is: 1 Count is: 2 Count is: 3 Count is: 4 Count is: 5 Count is: 6 Count is: 7 Count is: 8 Count is: 9 Count is: 10
Notice how the code declares a variable within the initialization expression. The scope of this variable extends from its declaration to the end of the block governed by the for statement, so it can be used in the termination and increment expressions as well. If the variable that controls a for statement is not needed outside of the loop, it’s best to declare the variable in the initialization expression. The names i , j , and k are often used to control for loops; declaring them within the initialization expression limits their life span and reduces errors.
The three expressions of the for loop are optional; an infinite loop can be created as follows:
The for statement also has another form designed for iteration through Collections and arrays This form is sometimes referred to as the enhanced for statement, and can be used to make your loops more compact and easy to read. To demonstrate, consider the following array, which holds the numbers 1 through 10:
The following program, EnhancedForDemo , uses the enhanced for to loop through the array:
class EnhancedForDemo < public static void main(String[] args)< int[] numbers = ; for (int item : numbers) < System.out.println("Count is: " + item); >> >
In this example, the variable item holds the current value from the numbers array. The output from this program is the same as before:
Count is: 1 Count is: 2 Count is: 3 Count is: 4 Count is: 5 Count is: 6 Count is: 7 Count is: 8 Count is: 9 Count is: 10
We recommend using this form of the for statement instead of the general form whenever possible.
Цикл For в Java
Говорят, что лучший программист — ленивый программист. Вместо того, чтобы совершать однотипные действия по нескольку раз, он придумает алгоритм, который сделает эту работу за него. А еще он сделает его хорошо, чтобы не нужно было переделывать. Примерно так, чтобы много раз не писать один и тот же код, придумали циклы. Представим, что нам нужно вывести в консоль числа от 0 до 99. Код без цикла:
System.out.println(0); System.out.println(1); System.out.println(2); System.out.println(3); System.out.println(4); System.out.println(5); // И так далее
Что такое циклы for?
- Приготовить стакан.
- Открыть крышку.
- Получить 1 каплю.
- Получить 2 каплю. …
- Получить 30 каплю.
- Закрыть лекарство.
- Принять полученную порцию.
- Приготовить стакан.
- Открыть крышку капель.
- Получить 30 капель.
- Закрыть лекарство.
- Принять полученную порцию.
Принцип работы цикла for
for(; ; ) < // Тело цикла >Пример перебора цифр от 0 до 5 и вывод каждой в консоль: for(int i = 0; i
Если перевести данную запись на человеческий язык, получится следующее: “Создай переменную i с начальным значением 0, пока она не достигнет 5, прибавляй к ней по 1 и на каждом шаге записывай значение i в консоль.” В основе работы цикла for в Java лежат три стадии, их можно изобразить следующей схемой: Условие выхода из цикла — это булево выражение. Если оно ложно, цикл будет завершен. В примере выше переменная i увеличивается на 1. Если ее значение менее 5, цикл продолжается. Но как только i станет больше или равно 5, цикл прекратится. Оператор счетчика — выражение, которое выполняет преобразование переменной счетчика. В примере выше переменная i увеличивалась на 1. То есть цикл будет выполнен ровно 5 раз. Если оператор счетчика будет прибавлять по 2 к переменной i , результат будет иным:
Также можно умножать переменную, делить, возводить в степень, в общем, делать все, что угодно. Главное, чтобы в результате преобразования получилось число. Тело цикла — любой код, который может быть выполнен. В примере выше в теле цикла был вывод значения переменной i в консоль, однако содержимое данного тела ограничено задачей и фантазией. Обобщая всю схему, принцип данного цикла — for — следующий: код, который находится в теле цикла, будет выполнен столько раз, сколько преобразований выполнит оператор счетчика до того, как будет достигнуто условие выхода из цикла. Если задать условие выхода из цикла как true :
for(int i = 0; true; i++) < if(i % 1000000 == 0) System.out.println(i); >System.out.println("Loop ended");
То код после цикла будет помечен ошибкой unreachable statement , так как никогда не будет исполнен. Задача на смекалку: в результате запуска кода ниже будет ли выведено в консоль “ Loop ended ” или цикл будет выполняться бесконечно?
for(int i = 0; i > -1; i++) < if(i % 1000000 == 0) System.out.println(i); >System.out.println("Loop ended");
Ответ: будет. Переменная i рано или поздно достигнет максимального значения, а дальнейшее увеличение превратит ее в максимальное отрицательное, в результате чего условие выхода будет выполнено (i < = -1).
Цикл forEach
При работе с циклами иногда приходится перебирать массивы или коллекции. Обычно массив можно перебрать с помощью цикла for:
public void printAllElements(String[] stringArray) < for(int i = 0; i < stringArray.length; i++) < System.out.println(stringArray[i]); >>
И это правильно. Однако, для перебора всех элементов массива по очереди придумали конструкцию forEach. Ее сигнатура следующая:
public void printAllElements(String[] stringArray) < for(String s : stringArray) < System.out.println(s); >>
Тоже кратко и лаконично. Самое главное, нет нужды думать о счетчике и об условии выхода, все уже сделано за нас.
Как используются циклы for
А теперь рассмотрим несколько примеров использование цикла for в Java для решения разнообразных задач.
Обратный цикл (от большего к меньшему)
Несколько переменных и увеличение счетчика в теле цикла
В цикле for можно использовать несколько переменных, например их можно преобразовывать в операторе счетчика:
int a = 0; for(int i = 5; i > 0; i--, a++)
Шаг: 0 Значение: 5 Шаг: 1 Значение: 4 Шаг: 2 Значение: 3 Шаг: 3 Значение: 2 Шаг: 4 Значение: 1
for(int i = 5, j = 11; i != j; i++, j--)
i: 5 j: 11 i: 6 j: 10 i: 7 j: 9
Вряд ли это действие имеет какую-либо ценность, но знать о такой возможности полезно. В цикле for также можно создавать внутренние циклы. В этом случае количество шагов цикла будет умножаться:
for(int i = 0; i < 5; i++) < System.out.print(i + " | "); for(int j = 0; j < 5; j++) < System.out.print(j + " "); >System.out.print('\n'); >
0 | 0 1 2 3 4 1 | 0 1 2 3 4 2 | 0 1 2 3 4 3 | 0 1 2 3 4 4 | 0 1 2 3 4
В цикле со счетчиком j есть возможность обращаться к счетчику внешнего цикла. Благодаря этому вложенные циклы — идеальный способ обхода двумерного, трехмерного и прочих массивов:
int[][] array = < , , , >; for(int i = 0; i < array.length; i++) < for(int j = 0; j < array[i].length; j++) < System.out.print(array[i][j] + " "); >System.out.print('\n'); >
0 1 2 3 4 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7
Досрочное завершение цикла
Если при обработке цикла нужно его прервать, используйте оператор break , который останавливает работу текущего тела цикла. Все последующие итерации также пропускаются:
public void getFirstPosition(String[] stringArray, String element) < for (int i = 0; i < stringArray.length; i++) < if(stringArray[i].equals(element)) < System.out.println(i); break; >> >
String[] array = ; getFirstPosition(array, "two");
Бесконечный цикл
Еще один способ создать бесконечный цикл for — оставить пустой область объявления счетчика, условие выхода и оператор счетчика:
Но учти, что в большинстве случаев бесконечный цикл — свидетельство логической ошибки. У такого цикла обязательно должно быть условие выхода.