分类: Java
2012-10-03 12:52:30
花了十几分钟终于把这个程序的具体执行过程中的每一步搞清楚了,不过写这篇博文却花了好久。
break语句:经常用在循环语句中,用于跳出整个循环,执行循环后面的代码;
continue语句:经常用在循环语句中,用于跳出当前的这个循环(或者是跳出本次循环),开始下一次循环的执行。
下面用一个简单的Java小程序来分析break与continue的区别,以及学习一下Java程序的执行过程
程序源代码如下
程序运行之后的结果如下
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循环,此时程序结束。
写完了,顺便把运行时候的截图发上来。