最普通的break语句和continue语句,我想大家在学习c与c++的时候已经很熟悉了,这里也就不多说了,现在主要就是说下java里边的新加的集中重要的用法:
这里,我插一句,其实我想大家都很熟悉c里边有一个见过几次面,但是又不是经常使用的一个语句,那就是goto语句,这个语句,我想老师已经讲过了,而且应该只是只言片语就带过了,因为在很多的老师的眼里,这种语句是个大混蛋,他可以完全打乱一个程序的可读性,和一定的逻辑性。在计算机的发展史上,在19世纪汇编语言刚刚现世的时候,很多的程序员大量的使用这种语句,但是经过一场风波之后,具体的我也不大清楚,请读者咨询百度,导致了这种语句的大量减少使用,导致最后的禁用。。。
现在我就冒天下之大不韪,来为这个沉睡在计算机的发展史上的语句平反陈冤,让他再重见天日!!!
废话不多说,直接进入今天的主题,
package outPak1;
import java.util.*;
public class outCls1 {
public static void main(String[] args) {
int i = 0;
outer: // Can't have statements here
for(; true ;) { // infinite loop
inner: // Can't have statements here
for(; i < 10; i++) {
prt("i = " + i);
if(i == 2) {
prt("continue");
continue;
}
if(i == 3) {
prt("break");
i++; // Otherwise i never
// gets incremented.
break;
}
if(i == 7) {
prt("continue outer");
i++; // Otherwise i never
// gets incremented.
continue outer;
}
if(i == 8) {
prt("break outer");
break outer;
}
for(int k = 0; k < 5; k++) {
if(k == 3) {
prt("continue inner");
continue inner;
}
}
}
}
// Can't break or continue
// to labels here
}
static void prt(String s) {
System.out.println(s);
}
} ///:~
这个代码的运行结果是
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
说明一下,这里有个很重要的一点,那就是如果使用Break outer语句的时候需要注意,你使用这个语句是为了调出当前循环,那么也就是说这个“outer:”这样的语句应该写在哪里呢?应该是写在该循环的上边,当然如果当前循环的外边还有一个循环,如果你写在了外边循环的里边,当前循环的前边,那么只是调出当前循环,如果你直接写在了外边循环的前边,那么就是不仅仅跳出了里边的循环,而且直接跳出了外边的循环,continue outer语句也是有着相似的含义;请谨慎使用哦!!!
package outPak1;
import java.util.*;
public class outCls1 {
public static void main(String[] args) {
int i = 0,time=0;
outer: // Can't have statements here
for(; true ;) {
// infinite loop
if(time==3) {
break;
}
time++;
inner: // Can't have statements here
for(i=0; i < 10; i++) {
prt("i = " + i);
if(i == 2) {
prt("continue");
continue;
}
if(i == 3) {
prt("break");
i++; // Otherwise i never
// gets incremented.
break;
}
if(i == 7) {
prt("continue outer");
i++; // Otherwise i never
// gets incremented.
continue outer;
}
if(i == 8) {
prt("break outer");
break outer;
}
for(int k = 0; k < 5; k++) {
if(k == 3) {
prt("continue inner");
continue inner;
}
}
}
}
// Can't break or continue
// to labels here
}
static void prt(String s) {
System.out.println(s);
}
} ///:~
i = 0
continue inner
i = 1
continue inner
i = 2
continue
i = 3
break
i = 0
continue inner
i = 1
continue inner
i = 2
continue
i = 3
break
i = 0
continue inner
i = 1
continue inner
i = 2
continue
i = 3
break
注意看下哦,这里还需要读者自己仔细体会哦。
当然这里还有一点值得提醒,break [logal]或者continue[logal],这个logal只能是出现在某一个循环的前边,当然如果出现在某一个非循环的前边,或者一个循环的前边出现了一个另外的语句,再然后这个语句的前边出现这个logal,这样是编译错误的。
大家来看个栗子:
public static void main(String[] args) {
// TODO Auto-generated method stub
z:
o+=2;
for(int i=3;i<8;i++) {
if(i==4)break;
if(i==6)break z;
o+=i;
}
System.out.println(o);
}
这里的break z是编译错误的,应该把加在z:后边的o+=2删了,或者换一个地方。