Idiot's Note Five: 代标号的continue和break,以及java中赋值的深入理解
语法:
?
continue 标号名
break? 标号名
?
作用:
?
continue 标号名 : continue 后的标号名 应该标识 在外层循环语句 ,其作用是使 程序的流程 转入标识的循环层次,继续执行
?
break 标号名 :? break 跳出 这个标识的语块,执行该语句的后续语句;
?
代码:
public class ContinueWithLableExample {public static void main(String[] args) {String searchMe="Look for a substring in me";String substring="for";boolean foundIt=false;int max=searchMe.length()-substring.length();System.out.println(searchMe.length());test:for(int i=0;i<=max;i++){int n =substring.length();System.out.println(n);int j=i;int k=0;System.out.println(k);while(n-- !=0){if(searchMe.charAt(j++)!=substring.charAt(k++)){System.out.println("j= "+j);System.out.println("k= "+k);continue test;}}foundIt=true;break test;}System.out.println(foundIt?"FoudIt":"Didn't find it");}}??
输出结果:
?
2630j= 1k= 130j= 2k= 130j= 3k= 130j= 4k= 130j= 5k= 130FoudIt
??
分析这串代码的运行轨迹:
1:代码都是顺序执行;
2:此处是双层循环,有嵌套的continue 和break语句;
?
当
?
while(n-- !=0){if(searchMe.charAt(j++)!=substring.charAt(k++)){System.out.println("j= "+j);System.out.println("k= "+k);continue test;}}??
当if
if(searchMe.charAt(j++)!=substring.charAt(k++)){System.out.println("j= "+j);System.out.println("k= "+k);continue test;}?
?
当if中的条件为真? 则 continue test,一次一次的跳出
|
.
.
.
循环
.
.
.
|
当循环到 第 六 次;
即:int j=5
????? n=3??
????? j++ 为6
????? k++ 为1
此时if中的条件为false; 就会运行while(n-- !=0){}的循环
????? n=2;
????? j++ 为7;
????? k++为2
此时if中条件为false;任然运行while(n-- !=0){}的循环
????? n=1;
????? j++ 为8;
????? k++为3;
此时if中条件为false,运行while(n-- !=0){}此时n=0 跳出while循环执行
foundIt=true;
break test;
跳出test了
?
此时 foundIt = true.
?
分析:
n循环的次数 和 substring的length(),这样就判定了 substring 是否与string中的匹配;
另外 在同一个循环中 变量是不断的赋值和赋值,j and k 是一个局部变量