Chinaunix首页 | 论坛 | 博客
  • 博客访问: 828405
  • 博文数量: 190
  • 博客积分: 2991
  • 博客等级: 少校
  • 技术积分: 2400
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-24 18:11
文章分类

全部博文(190)

文章存档

2015年(3)

2014年(1)

2013年(65)

2012年(121)

我的朋友

分类: Java

2012-10-03 12:52:30

花了十几分钟终于把这个程序的具体执行过程中的每一步搞清楚了,不过写这篇博文却花了好久。

   

break语句:经常用在循环语句中,用于跳出整个循环,执行循环后面的代码;
continue语句:经常用在循环语句中,用于跳出当前的这个循环(或者是跳出本次循环),开始下一次循环的执行。

  

下面用一个简单的Java小程序来分析break与continue的区别,以及学习一下Java程序的执行过程


程序源代码如下


  1. public class Test  
  2. {  
  3.     public static void main(String[] args)  
  4.     {  
  5.       
  6.         for(int a = 1;a < 10;a++)//第一个for循环语句  
  7.         {  
  8.             if(a == 5)//第一个if语句  
  9.             {  
  10.                 break;  
  11.             }  
  12.   
  13.             for(int b = 0; b <= a;b++)//第二个for循环语句  
  14.             {  
  15.                 if(b == 2)//第二个if语句  
  16.                 {  
  17.                     continue;  
  18.                 }  
  19.                   
  20.                 System.out.println("b=" + b);//第一条print语句  
  21.             }  
  22.   
  23.             System.out.println("a=" + a);//第二条print语句  
  24.         }  
  25.     }  
  26. }  



程序运行之后的结果如下

C:\001\java>javac Test.java
C:\001\java>java Test
b=0
b=1
a=1
b=0
b=1
a=2
b=0
b=1
b=3
a=3
b=0
b=1
b=3
b=4
a=4



为了方便分析,将上面程序运行之后的结果用“第XX条信息”表示

第01条信息:b=0
第02条信息:b=1
第03条信息:a=1
第04条信息:b=0
第05条信息:b=1
第06条信息:a=2
第07条信息:b=0
第08条信息:b=1
第09条信息:b=3
第10条信息:a=3
第11条信息:b=0
第12条信息:b=1
第13条信息:b=3
第14条信息:b=4
第15条信息:a=4



程序的详细分析过程如下



第01条信息:b=0
首先程序从第一个for循环语句【for(int a = 1;a < 10;a++)】开始,先定义一个变量a,将a赋初值为1,判断a的值是否小于10(1显然是小于10的),所以程序进入到第一个for循环【for(int a = 1;a < 10;a++)】的内部,开始执行第一个if语句【if(a == 5)】这条语句,if(a == 5)这条语句是用来判断a的值是否等于5,显然a此时的值为1,a的值是不等于5的,程序便跳过break这条语句,去执行第二个for循环语句【for(int b = 0; b <= a;b++)】,第二个for循环语句先定义了一个变量b,将b赋初值为0,然后执行第二个for循环语句【for(int b = 0; b <= a;b++)】中的b <= a;语句,判断b的值是否小于等于a(0显然是小于1的)于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第01条信息:b=0。



第02条信息:b=1
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第01条信息:b=0之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为1了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为1)b(为1),a和b是相等的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为1)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第02条信息:b=1。



第03条信息:a=1
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第02条信息:b=1之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为2了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为1)b(为2),a小于b,不符合b <= a;程序此时跳出第二个for循环【for(int b = 0; b <= a;b++)】,执行第二条print语句【System.out.println("a=" + a);】,在命令提示符上面显示出第03条信息:a=1。



第04条信息:b=0
执行第二条print语句【System.out.println("a=" + a);】,在命令提示符上面显示出第03条信息:a=1之后,程序又重新回到第一个for循环语句【for(int a = 1;a < 10;a++)】里面,执行其中a++语句,将a的值自增1,此时a的值为2,然后执行第一个for循环语句【for(int a = 1;a < 10;a++)】中的a < 10语句,a(为2)小于10,开始执行第一个if语句【if(a == 5)】,a(为2)不等于5,程序便跳过break这条语句,去执行第二个for循环语句【for(int b = 0; b <= a;b++)】,第二个for循环语句先定义了一个变量b,将b赋初值为0,然后执行第二个for循环语句【for(int b = 0; b <= a;b++)】中的b <= a;语句,判断b的值是否小于等于a(0显然是小于2的)于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第04条信息:b=0。



第05条信息:b=1
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第04条信息:b=0之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为1了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为2)b(为1),b是小于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为1)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第05条信息:b=1。



第06条信息:a=2
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第05条信息:b=1之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为2了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为2)b(为2),b是等于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为2)等于2,于是程序开始执行continue语句,continue是用来跳出当前循环的,程序开始执行第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为3了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为2)b(为3),b是大于a的,不符合b <= a;程序开始执行第二条print语句【System.out.println("a=" + a);】,在命令提示符上面显示出第06条信息:a=2。



第07条信息:b=0
程序开始执行第二条print语句【System.out.println("a=" + a);】,在命令提示符上面显示出第06条信息:a=2之后,程序又重新回到第一个for循环语句【for(int a = 1;a < 10;a++)】里面,执行其中a++语句,将a的值自增1,此时a的值为3,然后执行第一个for循环语句【for(int a = 1;a < 10;a++)】中的a < 10语句,a(为3)小于10,开始执行第一个if语句【if(a == 5)】,a(为3)不等于5,程序便跳过break这条语句,去执行第二个for循环语句【for(int b = 0; b <= a;b++)】,第二个for循环语句先定义了一个变量b,将b赋初值为0,然后执行第二个for循环语句【for(int b = 0; b <= a;b++)】中的b <= a语句,判断b的值是否小于等于a(0显然是小于3的),程序又进入到第二个if语句【if(b == 2)】,此时b(为0)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第07条信息:b=0。



第08条信息:b=1
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第07条信息:b=0之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为1了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为3)b(为1),b是小于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为1)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第08条信息:b=1。



第09条信息:b=3
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第08条信息:b=1之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为2了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为3)b(为2),b是小于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为2)等于2,于是程序执行continue这条语句,continue是用来跳出当前循环的,程序开始执行第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为3了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为3)b(为3),b是等于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为3)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第09条信息:b=3。



第10条信息:a=3
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第09条信息:b=3之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为4了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为3)b(为4),b是大于a的,不符合b <= a;于是程序跳出第二个for循环【for(int b = 0; b <= a;b++)】,程序开始执行第二条print语句【System.out.println("a=" + a);】,在命令提示符上面显示出第10条信息:a=3。



第11条信息:b=0
程序开始执行第二条print语句【System.out.println("a=" + a);】,在命令提示符上面显示出第10条信息:a=3之后,程序又重新回到第一个for循环语句【for(int a = 1;a < 10;a++)】里面,执行其中a++语句,将a的值自增1,此时a的值为4,然后执行第一个for循环语句【for(int a = 1;a < 10;a++)】中的a < 10语句,a(为4)小于10,开始执行第一个if语句【if(a == 5)】,a(为4)不等于5,程序便跳过break这条语句,去执行第二个for循环语句【for(int b = 0; b <= a;b++)】,第二个for循环语句先定义了一个变量b,将b赋初值为0,然后执行第二个for循环语句【for(int b = 0; b <= a;b++)】中的b <= a语句,判断b的值是否小于等于a(0显然是小于4的),程序又进入到第二个if语句【if(b == 2)】,此时b(为0)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第11条信息:b=0。



第12条信息:b=1
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第11条信息:b=0之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为1了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为4)b(为1),b是小于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为1)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第12条信息:b=1。



第13条信息:b=3
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第12条信息:b=1之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为2了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为4)b(为2),b是小于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为2)等于2,于是程序执行continue这条语句,continue是用来跳出当前循环的,程序进入第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为3了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为4)b(为3),b是小于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为3)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第13条信息:b=3。



第14条信息:b=4
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第13条信息:b=3之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为4了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为4)b(为4),b是等于a的,符合b <= a;程序又进入到第二个if语句【if(b == 2)】,此时b(为4)不等于2,于是程序跳过continue这条语句,执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第14条信息:b=4。



第15条信息:a=4
执行第一条print语句【System.out.println("b=" + b);】,在命令提示符上面显示出第14条信息:b=4之后,程序又回到第二个for循环【for(int b = 0; b <= a;b++)】里面,执行其中的b++语句,将b的值自增1,此时的b的值为5了,然后再执行第二个for循环【for(int b = 0; b <= a;b++)】里面的b <= a;语句,比较此时a与b的值的大小,此时a(为4)b(为5),b是大于a的,不符合b <= a;程序开始执行第二条print语句【System.out.println("a=" + a);】,在命令提示符上面显示出第15条信息:a=4。



程序开始执行第二条print语句【System.out.println("a=" + a);】,在命令提示符上面显示出第15条信息:a=4之后,程序又重新回到第一个for循环语句【for(int a = 1;a < 10;a++)】里面,执行其中a++语句,将a的值自增1,此时a的值为5,然后执行第一个for循环语句【for(int a = 1;a < 10;a++)】中的a < 10语句,a(为5)小于10,开始执行第一个if语句【if(a == 5)】,a(为5)等于5,程序便执行break这条语句,用break来跳出整个for循环,此时程序结束。


写完了,顺便把运行时候的截图发上来。




个人网站  
阅读(1103) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~