10. Java循环语句

Java 循环结构 - for, while 及 do...while

前面我们学习的条件语句都是顺序结构,如果想要执行一个操作多次,就需要用到循环结构

循环结构可以根据条件成立时,执行循环,条件不成立时,终止循环

Java的循环可以分为以下 3 种:

  • for
  • while
  • do ... while

本小节除了介绍这 3 种循环结构之外,还会介绍 continuebreak 这 2 个关键字

for 循环

语法:

for(初始化 ; 条件 ; 更新){ //循环体 }

for 循环使用计数器实现循环,在 for 的条件中

  • 第 1 步:进行计数器的初始化

  • 第 2 步:进行条件判断,如果为 true ,执行循环体内的代码

  • 第 3 步: 执行完循环体内的代码之后,计数器会进行更新操作,

    更新完计数器之后,会再执行2第步,第3步,一直到条件为 false , 跳出循环

下面用一个示例来演示 for 的用法 :

示例1:

public class HelloWorld { public static void main(String[] args) { for ( int i = 1 ; i <= 5; i++){ System.out.println("example.com"); } } } //输出如下: example.com example.com example.com example.com example.com

由上面的例子可以知道:

  1. i 初始化为 1
  2. 判断 i <= 5 是否成立
  3. i <= 5 成立后,执行打印操作
  4. 打印完之后,执行 i++ 操作,也就是更新计数器,更新完之后, i 的值为 2
  5. 此时判断 2 <= 5 是否成立,显然成立 ,则再次打印
  6. 打印完之后,会再执行 i++ ,也就是更新计数器,更新完之后, i 的值为 3
  7. 此时判断 3 <= 5 是否成立,显然成立,则再次打印
  8. 此后的步骤就是一直执行 2,3,4 的步骤
  9. 直接最后, i++ 之后,i 的值为 6 , 已经不满足 i <= 5 的条件了,跳出循环,结束。

再来看一个例子,用 for 求 1 到100的和

示例2:求 1到100的和

public class HelloWorld { public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 100; i++) { sum = sum + i; } System.out.println(sum); } } //输出 : 5050

从上面可知,for循环了100次,计数器分别从1累加到100

我们在每次的循环的时候,把 i 的值累加到 一个变量 sum 中去

当循环结束的时候,正好从 1 加到 100了。

Java增强 for 循环

Java5 中引入了一个增强版的 for 循环,可以更加方便的对数组,集合进行循环遍历

语法如下:

for(声明语句 : 表达式) { //代码句子 }

**声明语句:**声明新的局部变量,该变量的类型必须和数组或者集合中的元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

**表达式:**表达式是要访问的数组或者集合,或者是返回值为数组或集合的方法。

数组和集合还没有讲到,可以先看一下示例试着理解一下

后面章节讲到数组和集合的时候,会再讲一次

先看一个示例:

public class HelloWorld { public static void main(String[] args) { //定义一个数组,并初始化 //此数组中有 3 个元素 String[] sites = new String[]{"example.com","www.baidu.com","www.qq.com"}; for (String site : sites) { System.out.println(site); } } }

从上面可以看出,for 循环的步骤如下:

  1. 定义一个 site 变量,String类型的,因为要和数组中的元素的类型相同

  2. 每次都会把 sites 数组中的元素依次赋值给 site

    String site : sites 这一句就是不停的把sites 中的元素赋值给 site,然后执行循环体

  3. 打印 site

while 循环

while 的英文意思是 在……时候 , 所以,while循环也是当 条件成立 时,执行循环体

语法如下:

while( 布尔表达式 ) { //循环内容 }

看下面的示例:

public class HelloWorld { public static void main(String[] args) { int index = 10; // index 的值小于等于 15 的时候 // 执行循环体 while (index <= 15 ) { System.out.println(index); index++; } } }

由上面可以知道,while 的循环相对简单:

  1. index初始化为10,判断条件是否成立,显然 10 <= 15 , 成立

  2. 条件成立,执行打印操作,打印完之后,执行 index++ ,此时 index 的值为 11

  3. 继续判断while的条件是否成立, 显示此时 index11, 条件成立 ,继续执行 打印操作

    .....

此后的步骤一直重复2,3 步骤。直到index的值是 16,不满足条件,跳出while循环。

do…while 循环

对于 while 循环,当条件满足时,就执行循环体,是先判断条件是否成立,成立再执行。

但有时候我们需要即使不满足条件,也至少执行一次。

这就是 do ... while 循环

while 不同的是: do ...while 是先执行一次,再判断条件,如果条件成立 ,继续执行循环体,如果不成立,跳出循环

但是已经执行过一次了,所以 do ... while 会至少执行一次循环体

语法如下:

do { //代码语句 } while (布尔表达式);

执行体在前面 ,布尔表达式在后面,所以:

  1. 先执行循环体中的代码
  2. 执行完之后,再去判断 while 后面的条件是否成立
  3. 如果成立,继续执行循环体的代码,如果不成立 ,则跳出循环

在跳出循环后,可以看到不管条件怘不成立,do...while 语句至少执行了一次

看下面的示例:

public class HelloWorld { public static void main(String[] args) int count = 10; do { System.out.println(count); count++; }while (count <= 5); } } //输出如下: 10

从上面可以看到, count 值为 10 ,不满足条件 count <= 5 ,但是也打印出了 10

就是因为 do ... while 语句会至少执行一次

我们来看一个正常的例子:

public class HelloWorld { public static void main(String[] args) { int count = 10; do { System.out.println(count); count++; }while (count <= 15); } } //输出如下: 10 11 12 13 14 15

break关键字

break 关键字是中断循环的作用,主要用在循环语句或者switch语句中。用来跳出整个语句块

如果有循环嵌套,break 跳出最里面的循环。并且继续执行外面的循环的语句

语法:

很简单,就一个关键字 break; 就行了

示例:

public class HelloWorld { public static void main(String[] args) { for (int i = 1; i <= 10;i++) { // 当 i 为 5 时,中断循环 if( i == 5 ){ break; } System.out.println( i ); } } } //输出如下: 1 2 3 4

continue 关键字

continue关键字用于循环控制结构中

它的作用是:可以跳过当次循环,继续执行下一次循环

语法:

和 break一样,也是只有一个关键字:continue;

示例:打印所有的奇数

public class HelloWorld { public static void main(String[] args) { for (int i = 1; i <= 10;i++) { //当 i 为偶数时,跳过本次循环,继续下一次循环 if ( i % 2 == 0 ) { continue; } System.out.println( i ); } } } //输出如下: 1 3 5 7 9

从上面可以看出:

  • 当 i 为偶数时( i % 2 == 0 ),就跳出当这一次的循环,下面的语句不执行,然后继续下一次的循环

  • 当 i 为奇数时( i % 2 != 0 ) , 就继续执行下面的打印语句

小结

本小节学习了Java的循环控制结构,现总结一下:

  • Java 循环结构分为 while,do...while,for
  • while 是先判断条件,条件成立 ,执行循环,依次重复此步骤
  • do ... while 是先执行一次循环体,再判断条件,条件成立,再次执行循环体
  • for 是靠计数器来执行循环体
  • break 可以用在循环结构和 switch 结构中,用以跳出当前循环
  • continue 是用在循环结构中,跳出当前这一次的循环,继续下一次的循环