302班

java突击队
posts - 151, comments - 74, trackbacks - 0, articles - 14
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

continue与break的区别,用法

Posted on 2007-04-14 10:11 停留的风 阅读(20263) 评论(4)  编辑  收藏 所属分类: Java程序集合

在一具循环体中,如果用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());
            }

        }

    }


评论

# re: continue与break的区别,用法  回复  更多评论   

2007-04-14 10:44 by 我为J狂
break 与 continue 加标签相当于goto语句,不建议大家使用。

# re: continue与break的区别,用法  回复  更多评论   

2007-04-14 21:27 by 停留的风
@我为J狂
说的非常好。多谢提醒

# re: continue与break的区别,用法  回复  更多评论   

2007-06-01 09:43 by 148447809
谢谢,让我搞得更明白,这个很好

# re: continue与break的区别,用法  回复  更多评论   

2007-06-02 09:28 by yank
客气啦。大家互相学习哦

只有注册用户登录后才能发表评论。


网站导航: