Java中while与do-while执行顺序的区别:
一、while 和 do-while都是循环语句,他们的区别是 do-while语句的循环体至少被执行一次,而while语句不用;
如下代码进行演示:
int x = 1 ;
while(x == 10){
x++;
System.out.println("我在while语句中");
}
do{
x++;
System.out.println("我在do-while语句中,我至少要被执行一次");
}while(x >= 10);
在代码中,x 的值是 1 ,则不管是 while 还是 do-while ,他们的表达式 x == 10 、x >= 10 的值都是 false 的,所以对于while语句是不进行任何操作的,但是对于 do-while 语句,就算表达式的值为 false ,他的循环体也会执行一次的;
所以最后程序输出为:我在do-while语句中,我至少要被执行一次
二、for嵌套for语句的执行顺序;
在Java程序中,经常在一个 for语句的循环体中,再继续编写一个 for语句 ,那么他们之间的执行顺序是怎么样的呢?
如下代码进行演示:
for(int i=0;i<=1;i++){
System.out.println("第一个,for循环体");
for(int j=0;j<=i;j++){
System.out.println("第二个,for循环体");
}
}
在第一个 for 的 () 中一共分有三个表达式,int i=0,i<=1,i++,他们之间用 ; 进行分隔开
表达式1,int i=0,声明了一个 变量 i ,初始值为0 ;
表达式2,i<=1,是运算结果为boolean类型的表达式;
表达式3,i++,是修改变量的值,用于表达式2中进行判断;
执行步骤:
1、先对第一个for的 () 分析,进行 int i = 0,完成变量初始化,再对表达式 i<=1 进行判断, 为true则执行循环体中的语句,代码中 i<=1 是true,所以执行一次循环体中的 System.out.println("第一个,for循环体"); 语句,此时 i 值是为0 ;
注意:表达式3的 i++ 还没有被执行;
2、继续往下,分析 第二个for () 中的表达式,先进行 int j = 0,完成变量初始化,再对表达式 j<= i 进行判断,为true则执行循环体中的语句,代码 中 j 的值为0 的,所以 j<= i 是true,所以执行一次循环体中的 System.out.println("第二个,for循环体"); 语句;
3、执行完循环体语句后,执行 j++ ,回到 表达式 j<= i 进行判断,此时 j 的值为 1 ,所以 1<= i 是为 false 的 ,则跳出 第二个 for 的循环体;
4、进入第一个 for 的循环体中,执行 i++ ,回到 表达式 i<=1 进行判断,此时 i 的值为 1 ,所以 1<= 1 是为 true 的,执行一次循环体中的 System.out.println("第一个,for循环体"); 语句,此时 i 值是为1;
5、进行往下执行,重新分析 第二个for () 中的表达式,此时 j 为 0 ,i 为 1 ;所以 表达式 j<= i 的值为 true ,执行 循环体中 System.out.println("第二个,for循环体"); 语句, 此时 j 值是为0 ;
6、再执行 j++ ,回到 表达式 j<=1 进行判断,此时 j 的值为 1 ,所以 1<=1 也是为 true 的 ,再次执行 循环体中 System.out.println("第二个,for循环体"); 语句,再执行 j++ ,回到 表达式 j<=1 进行判断,此时 j 的值为 2 ,所以 2<=1 是为 false 的 , 则跳出 第二个 for 的循环体;
7、跳出 第二个 for 的循环体后,执行 i++ ,回到 表达式 i<=1 进行判断,此时 i 的值为 2 ,所以 2<= 1 是为 false 的,则跳出 第一个 for 的循环,即结束整个循环;
以上过程中:
i 和 j 的变化是:
第一次循环 i = 0 ,j = 0 ,j++ ,j = 1 ,j<=i 为 flase , 跳出第一次循环;
第二次循环 i = 1 , j = 0 , j++ ,j = 1 ,j<=i 为 true ,j++ , j = 2 ,j<=i 为 false ,跳出第二次循环
,i++ ,i = 2 , i <= 1 为 false,跳出整个 for 循环;
此次循环一共执行了 五次 System.out.println(""); 语句,分别为:
我在第一个for循环体中
我在第二个for循环体中
我在第一个for循环体中
我在第二个for循环体中
我在第二个for循环体中