while与do-while执行顺序的区别、for嵌套for执行顺序

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循环体中


 

发布了57 篇原创文章 · 获赞 10 · 访问量 7557

猜你喜欢

转载自blog.csdn.net/LagerSwan/article/details/104092256
今日推荐