第4章控制执行流程
1.foreach语法:for(datatype x: f)
foreach语法用于数组;
任何一个返回一个数组的方法都可以使用foreach;
foreach还可以用于任何Iterable对象;
示例:
public class ForEachString {
public static void main(String[] args)
{
for(char c: "I am a newbiew of Java".toCharArray())
System.out.print(c + " ");
}
}
结果:
I a m a n e w b i e w o f J A V A
2.标签
goto仍然是JAVA中的一个保留字,但在语言中并未使用它;JAVA中没有goto。
JAVA有类似goto的机制:标签
label1:
outer-iteration {
inner-iteration{
//...
break; //(1)
//...
continue; //(2)
//...
continue label1; //(3)
//...
break label1; //(4)
}
}
在(1)中,break中断内部迭代,回到外部迭代;
在(2)中,continue使执行点回到内部迭代的起始处;
在(3)中,continue label1同时中断内部迭代以及外部迭代,直接转到label1处,随后,从外部迭代开始继续迭代过程;
在(4)中,break label1会中断所有迭代,回到label1处,但并不重新进入迭代;
示例
import static net.mindview.util.Print.*;
public class LabelFor {
public static void main(String[] args) {
int i = 0;
outer:
for (; true ;) {
inner:
for (; i
print ("i = " + i);
if (i == 2) {
print("continue");
continue;
}
if (i == 3) {
print("break");
i++;
break;
}
if (i == 7) {
print("continue outer");
i++;
continue outer;
}
if (i == 8) {
print("break outer");
break outer;
}
for (int k = 0; k
if (k == 3) {
print("continue inner");
continue inner;
}
}
}
}
print("Byebye, finished");
}
}
结果:
i = 0
continue inner
i = 1
continue inner
i = 2
continue
i = 3
break
i = 4
continue inner
i = 5
continue inner
i = 6
continue inner
i = 7
continue outer
i = 8
break outer
Byebye, finished
同样的规则适用于while:
一般的continue会退回最内层循环的开头,并继续执行;
带标签的continue会达到标签的位置,并重新进入紧跟在标签后面的循环;
一般的break会中断并跳出当前循环;
带标签的break会中断并跳出标签所指的循环。
要记住的重点:在JAVA里需要使用标签的唯一理由是因为有循环嵌套存在,而且想存多层嵌套中break或者continue。