`
wuqiwei
  • 浏览: 21143 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员—程序流程控制 其他的流程控制语句 之 break

 
阅读更多

------- android培训java培训、期待与您交流! ----------

 

class otherdemo//其他的流程控制语句 之break
{
	public static void main(String[] args)

//注意:不能老是自动填充还不到那种程度  竟然丢了static!!
	
	{

//一:break 适用范围:选择结构 循环结构(内)其他地方无意义

	 w:for (int x=0;x<3 ;x++)//只有循环可定义名称 要加: 如这里的w和下边的q
		{
			//System.out.println("x=A"+x);
/*
				//  break; 结果为x=0 跳出了循环 但是如果break 放在System上 
			      面System就不会执行了 只有break;前面有if语句使执行语句有
				  可能执行才可以 如下:
*/
			  if (x==58) /*当我们注释掉上面的System.out.println("x=A"+x);时
			              针对break的有无以及if语句用来存放执行语句的大括
						  号的有无的变化 会出现下列4种情况:*/

/*1.有break 且if 执行语句有括号 即:
		if (x==2)
			{
				break;
			}
				{ 				
					System.out.println("x="+x);
				}
	显示结果为:
				x取值:		打印结果:
				 x==0			空白
				 x==1			x=0		
				 x==2			x=0 x=1		
				 x==m(m>=3)		x=0 x=1 x=2	

2.有break 但if 执行语句无括号 即:
		if (x==2)
			//{
				break;
			//}
				{ 				
					System.out.println("x="+x);
				}
	显示结果为:
				x取值:	    打印结果:
				 x==0			空白
				 x==1			x=0		
				 x==2			x=0 x=1		
				 x==m(m>=3)		x=0 x=1 x=2	

3.无break 但if 执行语句有括号 即:
		if (x==2)
			{
				//break;
			}
				{ 				
					System.out.println("x="+x);
				}
	显示结果为:
				x取值:		  打印结果:
				 x==0			       x=0 x=1 x=2
				 x==1			       x=0 x=1 x=2		
				 x==2			       x=0 x=1 x=2		
				 x==m(m>=3)		       x=0 x=1 x=2	
				 .					.
				 .					.
				 .					.
				 .					.
				 x 不论取何值 结果均为 x=0 x=1 x=2 //if 无效 被javac忽视

4.无break 且if 执行语句无括号 即:
		if (x==2)				
			//{
				//break;
			//}
				{ 				
					System.out.println("x="+x);
				}
	显示结果为:
				x取值:	    打印结果:
				 x==0			x=0
				 x==1			x=1		
				 x==2			x=2		
				 x==m(m>=3)		空白	//执行语句被if劫持

总结:  一.如果if 语句在for循环中 且位于for循环的执行语句上面(上述1.2的
		  情况) 那么如果if 条件表达式 符合 for中的 x 值 则执行break 如
		  果不符合就向下执行for的执行语句 所以就会出现示例1和2的结果

	   二.如果if 语句在for循环中 但是其下方没有break(上面3.4的情况) 那
		  么 如果 if 带有括号但是没有执行语句(其实对javac来说就相当于
		  废话) 那么对for循环是没有影响的(如上面的示例3) 但是如果没有
		  括号 注意了 因为for是有执行语句的 在计算的过程中 javac 发现if
		  下有{}就会自动将它视为if 的执行语句 这样 for的执行语句就就被
		  if 劫持了 所以就会出现上面的结果
*/


			break;  /* 如果 System.out.println("x=A"+x);不被注释 且break放
					   在这里 当if 条件x取不同值时 会影响最后的结果:

			x取值:			 打印结果:
			 x==0			x=A0	Hello World!
			 x==1			x=A0 x=0 x=A1	Hello World!
			 x==2			x=A0 x=0 x=A1 x=1 x=A2		Hello World!
			 x==m(m>=3)		x=A0 x=0 x=A1 x=1 x=A2 x=2		Hello World!

总结:之所以会出现这样的情况 是因为for的初始化表达式就是x=0 当下边的if定义
	 一个条件表达式x==p时(p可变) 如果p=0 即与for中x的值相同 那么if就会判断
	 "x确实等于for定义的x=0值 条件正确 所以执行break" 就跳出了这个循环 所
	 以会就出现了第一个结果 x=A0  以后的不同结果同理
*/			


			{   
				
				System.out.println("x="+x);
				
			}
				  
				
		
/*		q:for (int y=0;y<4 ;y++)
			{
				System.out.print("x="+x);
				break q;	//break在这里 若是break q; 则直接跳出内循环
				结果为: x=0
						x=1
						x=2	
				若是break w; 则只打印一次x=0就直接跳出外循环
				结果为: x=0
*/			
	

				/*若break; 写在这里 则默认跳出外循环 结果除了if语句中
				  的x==0时为空白结果 其他x==任何值 都是结果为0 因为程
				  序走到这里时就会跳出该循环了 只显示一个结果*/
}
			
		System.out.println("Hello World!");
		//注意这句是写在两个大括号上面的 不要写在最后一个括号上面 就错了
	}	
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics