In Java we write a definite loop (aka a for loop) as:
0 1 2 3 4 5 6 7 8 9
You may not be familiar with the expression
i++ since it is not
found in all languages. The
++ is an increment operator that has the same
i += 1. In this example, since the
++ comes after
i, we call it a postfix increment operator. There is also a
decrement operator in Java. For more information, see
Increment and Decrement Operators
for loop gives you explicit control over the starting, stopping,
and stepping of the loop variable inside the parentheses. You can think of it
If you want to start at 100, stop at 0 and count backward by 5, the loop is written as:
100 95 90 ...
Java also provides a syntax to iterate over any sequence or collection, such as an Array:
Here, the loop variable moves through the items in the Array of integers,
nums. The syntax
here uses a colon symbol,
:. This type of loop is known as a for-each loop.
When considering this structure, it can be helpful to read the code sample above to yourself
as “For each integer in
This loop version also works with a String, where we can convert the String to an Array of characters:
As you see, to iterate through a String in this way, Java requires an extra String method,
.toCharArray(), to convert the String to an Array of characters.
Java also supports the while loop, or indefinite loop.
while loop in Java:
Java adds an additional, if seldom used, variation of the
called the do-while loop. The
do-while loop is very similar to
while except that the condition is evaluated at the end of the loop
rather than the beginning. This ensures that a loop will be executed at
least one time. Some programmers prefer this loop in some situations
because it avoids an additional assignment prior to the loop.
Above, the message prints despite the condition never being met.
Break Statements in Loops
There are instances where you may want to terminate a loop if a given
condition is met. In these instances, the
break statement comes in
handy. For example, say you want to loop through an Array of integers
to search for a given value. Once that number is found, you want to quit
the loop. You can do the following:
In the code above, instead of the
for loop iterating through all the
integers in the array, it will stop after it finds the first matching
instance. So once it finds the first
10 in the array, it prints “Found
it!” and then terminates the loop. If the
break statement weren’t
there, the loop would continue and when it found the second
would print “Found it!” a second time.
Note that the
break statement terminates the innermost loop that it
is contained within. So if you have nested loops and use a
statement within the innermost loop, then it will only terminate that
loop and not the outer one. If a
break is present in the outer loop,
it — and any other block nested within it — is terminated when the
Continue Statements in Loops
The continue statement is similar to, but importantly different
break statement. Like
break, it interrupts the normal
flow of control of the loop. But unlike
statement only terminates the current iteration of the loop. So the
loop will continue to run from the top (as long as the boolean
expression that controls the loop is still true) after a
statement. Here is an example:
The above program will print “Not here” on every iteration of the
for loop except where the number has been found. So the output
looks like this:
Not here Found it! Not here Not here Not here Not here Found it!
Because of the
continue statement, the final print statement in the
for loop is skipped. If the
continue statement weren’t there, the
output would look like this instead (notice the extra “Not here”
Not here Found it! Not here Not here Not here Not here Not here Found it! Not here
Check Your Understanding
What does the missing
<loop-statement> need to be to print each item in
char i : chars
char i : chars
char i in chars
char i in chars
How many times does the message print and why?
- 0 — The
whilecondition is never true.
- 1 — The print statement is evaluated before the conditional.
- infinite times — 3 is less than 2, and the condition is never changed in the loop.