break和continue的区别如下:
1. break可用于switch语句,表示跳出整个switch块,而continue则不能用于switch语句
2. 它们都可用于循环语句的循环体,所谓的区别也应该是它们对循环次数的影响不同。break用于立即退出当前循环,而continue仅跳过当次循环(本次循环体内不执行continue语句后的其它语句,但下次循环还会执行)。举例说明。
int i;
int s = 0;
for (int i = 1; i <= 10; i++)
{
if (i == 6) break;
s += i;
}
上面的循环会因为break语句而在i=6时提前终止,这样s的最终值就是1+2+3+4+5
如将break换成continue
int i;
int s = 0;
for (int i = 1; i <= 10; i++)
{
if (i == 6) continue;
s += i;
}
当i=6时就不会将i累加到s中,s的最终值是1+2+3+4+5+7+8+9+10,唯独少一个6
在一具循环体中,如果用break返回, 则不管其后面是否有满足for中条件的情况,都不做for中的循环体,即不会做;
如果用continue返回,如果条件满足执行continue, 跳出下面语句的执行,而返回到for 语句的开头,再次判断for中的条件,从而根据条件执行其中的循环体内容。
简单地说,比如这样一个程序:
for(...) {
...
continue/break;
...
}
System.out.prinln("a");
continue表示立即去执行“for(...)”这行代码,break表示立即去执行“System.out.prinln("a");”这行代码。我随手写了一段程序,你看看可能能帮助你理解。
public class BreakTest {
public static void main(String args[]) {
System.out.println("循环没有开始");
System.out.println("现在开始测试continue");
for (int i = 0; i < 3; i++) {
System.out.println("开始第" + i + "次for循环");
if (i == 1) {
continue;
}
System.out.println("看看continue后这里执行了吗?");
}
System.out.println("continue测试完毕\n***********************");
System.out.println("现在开始测试break");
for (int i = 0; i < 3; i++) {
System.out.println("开始第" + i + "次for循环");
if (i == 1){
break;
}
System.out.println("看看break后这里执行了吗?");
}
System.out.println("break测试完毕\n***********************");
}
}
1. break 与 continue 加标签用法
在Java语句里,唯一能放标签的地方是在循环语句前面。而且循环语句跟标签之间不能有任何东西。
label1:
outer-iteration {
inner-iteration {
//...
break; // 1
//...
continue; // 2
//...
continue label1; // 3
//...
break label1; // 4
}
}
案例1会中断内部循环。2会中断内部当前循环,直接跳入下一轮循环。案例3中断内部和外部循环,跳到label1,从外部开头重新开始循环。案例4跳到label1,且不在进入循环。
下面举例:
public class LabeledFor {
static Test monitor = new Test();
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++) {
System.out.println('i = ' + i);
if(i == 2) {
System.out.println('continue');
continue;
}
if(i == 3) {
System.out.println('break');
i++; // Otherwise i never
// gets incremented.
break;
}
if(i == 7) {
System.out.println('continue outer');
i++; // Otherwise i never
// gets incremented.
continue outer;
}
if(i == 8) {
System.out.println('break outer');
break outer;
}
for(int k = 0; k < 5; k++) {
if(k == 3) {
System.out.println('continue inner');
continue inner;
}
}
}
}
}
} ///:~
结果:
'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'
class TestBreak
{
static void Main(string[] args)
{
List<int> list = new List<int>();
for (int i = 0; i < 100; i++)
{
list.Add(i);
}
foreach (int i in list)
{
if (i == 2)
{
continue;//结束此次循环,不再执行席迈的代码,继续下一次循环
}
if (i ==10)
{
break;//退出整个循环
}
Console.WriteLine("该值为:" + i.ToString());
}
}
}
阅读(13998) | 评论(0) | 转发(2) |