循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环,否则循环一直执行下去,形成死循环。一个循环语句可能包含以下四个部分:
- 初始化语句(init_statement):一条或多条语句,这些语句用于完成一些初始化工
作,初始化语句在循环体之前执行。 - 循环条件(test_expression):这一般是一个 boolean表达式,这个表达式能决定是否执行循环体。
- 循环体(body_statement):这个部分是循环体的主体,如果循环条件允许,这个
代码块将被重复执行。 - 迭代语句(iteration_statement):这个部分在一次循环体执行结束后,对循环条
件求值之前执行,通常用于控制循环条件的变量,使得循环再合适的时候结束。
以上四个部分知识一般性的分类,并不是每个循环中都很明确的分出这四个部分。
while循环语句
while 语句是循环语句,也是条件判断语句。它的循环重复执行方式,是利用一个条件
来控制是否要继续重复执行这个语句。具体的语法格式如下:
init_statement;// 初始化部分
while(test_expression ){
body_statement;//这里包含步进(迭代部分)
}
while 循环每次执行循环体之前,先对 expression 进行求值,如果循环的条件是 true,则运行循环体部分。如果循环的条件是 false,那么就永远不会执行循环体。
注意:如果在 while( expression )后边加了一个分号,这样就会使程序执行一条空语句。
// 希望输出 1 到 10 ,这 10 个数字
int i = 1 ; //1、控制循环是否继续的一个变量
while( i <= 10 ) { //2、判断是否满足某个条件
System.out.println( i ) ;
i++ ; //3、让 i 变化起来,朝着 "越来越不满足" 的方向走
}
do..while循环语句
do…while 循环与 while 循环的区别在于: while 循环是先判断循环条件, 如果条件为真, 则执行循环体; 而do…while 循环则先执行循环体, 然后才判断循环条件, 如果循环条件为真, 则执行下一次循环, 否则中止循环。 do…while循环的语法格式如下:
init_statement;
do{
body_statement; //这里包含 步进 (迭代部分)
} while (test_expression );//注意, 这里的分号不能省略! 否则编译通不过
do…while 循环的循环条件后边必须有一个分号, 这个分号表示循环结束。 如果test_expression 表达式的值如果是 false,那么循环体也会执行。
while 和 do…while 的区别: while 可能一次都不会执行, do…while 至少会执行一次循环体。
for循环
for 循环是更加简洁的循环语句, 可以和 while 循环、 do…while 循环互换。 基本格式如下:
for( init_statement; test_expression ; iteration_statement ){
body_statement;
}
程序执行 for循环时,先执行循环的初始化语句 init_statement,初始化语句只在循环开始前执行一次。每次执行循环体之前,先计算 test_expression 循环条件的值,
如果循环条件返回true,则执行循环体,循环体执行结束之后执行循环迭代语句。因此,对于 for循环而言,循环条件总比循环体要多执行一次,因为最后一次执行循环条件返回 false,将不再执行循环体。 for 循环的循环迭代语句并没有与循环体放在一起,因此,即使执行循环体时遇到continue语句结束本次循环,循环迭代语句也一样会得到执行。
例子:
public class ForLoop1 {
public static void main(String[] args) {
/*
int i = 5 ;
while( i > 0 ) {
System.out.println( "i = " + i );
i-- ;
}
*/
for( int i = 5 ; i > 0 ; i-- ){
System.out.println( "i = " + i );
}
}
}
for循环明显知道循环了多少次,如果次数很确定的话,就是用for循环;如果不知道明确的次数的话,一般是用while循环。
public class ForLoop2 {
public static void main(String[] args) {
// 输出 十个 * 后再换行
for( int i = 0 ; i < 10 ; i++ ){
System.out.print( " * " );
}
System.out.println();
}
}
// 输出十个星,让十个星执行十次
public class ForLoop3 {
public static void main(String[] args) {
for( int m = 0 ; m < 10 ; m++ ) {
// 输出 十个 * 后再换行
for( int i = 0 ; i < 10 ; i++ ){
System.out.print( " * " );
}
System.out.println();
}
}
}
public class ForLoop5 {
public static void main(String[] args) {
int c = 0 ;
for( int m = 0 ; m < 10 ; m++ ) {
// 输出 十个 * 后再换行
for( int i = 0 ; i <= m ; i++ ){
c++ ;
System.out.print( " (" + m + " , " + i + ") " );
}
System.out.println();
}
System.out.println( c );
}
}
近期评论