------- 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!");
//注意这句是写在两个大括号上面的 不要写在最后一个括号上面 就错了
}
}