Java 循环结构 - for, while 及 do...while
前面我们学习的条件语句都是顺序结构,如果想要执行一个操作多次,就需要用到循环结构
循环结构可以根据条件成立时,执行循环,条件不成立时,终止循环
Java的循环可以分为以下 3 种:
- for
- while
- do ... while
本小节除了介绍这 3 种循环结构之外,还会介绍 continue 和 break 这 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("www.helloworld.net"); } } } //输出如下: www.helloworld.net www.helloworld.net www.helloworld.net www.helloworld.net www.helloworld.net
由上面的例子可以知道:
-
i
初始化为1
- 判断
i <= 5
是否成立 -
i <= 5
成立后,执行打印操作 - 打印完之后,执行
i++
操作,也就是更新计数器,更新完之后, i 的值为2
- 此时判断
2 <= 5
是否成立,显然成立 ,则再次打印 - 打印完之后,会再执行
i++
,也就是更新计数器,更新完之后,i
的值为3
- 此时判断
3 <= 5
是否成立,显然成立,则再次打印 - 此后的步骤就是一直执行
2,3,4
的步骤 - 直接最后,
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[]{"www.helloworld.net","www.baidu.com","www.qq.com"}; for (String site : sites) { System.out.println(site); } } }
从上面可以看出,for
循环的步骤如下:
-
定义一个
site
变量,String类型的,因为要和数组中的元素的类型相同 -
每次都会把
sites
数组中的元素依次赋值给site
String site : sites
这一句就是不停的把sites 中的元素赋值给 site,然后执行循环体 -
打印
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
的循环相对简单:
-
index
初始化为10
,判断条件是否成立,显然10 <= 15
, 成立 -
条件成立,执行打印操作,打印完之后,执行
index++
,此时index
的值为11
-
继续判断
while
的条件是否成立, 显示此时index
为11
, 条件成立 ,继续执行 打印操作.....
此后的步骤一直重复2,3 步骤。直到index
的值是 16
,不满足条件,跳出while
循环。
do…while 循环
对于 while
循环,当条件满足时,就执行循环体,是先判断条件是否成立,成立再执行。
但有时候我们需要即使不满足条件,也至少执行一次。
这就是 do ... while
循环
和 while
不同的是: do ...while
是先执行一次,再判断条件,如果条件成立 ,继续执行循环体,如果不成立,跳出循环
但是已经执行过一次了,所以 do ... while
会至少执行一次循环体
语法如下:
do { //代码语句 } while (布尔表达式);
执行体在前面 ,布尔表达式在后面,所以:
- 先执行循环体中的代码
- 执行完之后,再去判断 while 后面的条件是否成立
- 如果成立,继续执行循环体的代码,如果不成立 ,则跳出循环
在跳出循环后,可以看到不管条件怘不成立,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 是用在循环结构中,跳出当前这一次的循环,继续下一次的循环