A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘学 中级黑马   /  2012-8-10 10:34  /  3300 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘学 于 2012-8-10 15:21 编辑

public class B {

public static void main(String[] agrs){

  outer:  //标签
  for(int i = 0;i<5;i++){
   for(int j = 0;j <4; j++){
    if(j==2){
    //return;
     //break;
     //continue
     //continue outer;
     //break outer;

     }
    }
   }
  }
}

请问蓝色部分的几个语句的区别和异同?希望各位用自己的理解方式去讲。

6 个回复

倒序浏览
我的回答你看看  红色字体部分

public class B {

public static void main(String[] agrs){

  outer:  //标签
  for(int i = 0;i<5;i++){
   for(int j = 0;j <4; j++){
    if(j==2){
    //return;   return关键字并不是专门用于跳出循环的,而是结束一个方法。一旦在循环体内执行到一个return语句,该方法将会结束,循环自然也随之结束。
     //break;  在多重循环中,不带标号的break语句将只退出它所在的内循环
     //continue  停止当前循环的迭代,退回循环起始处,开始下次迭代
     //continue outer; 带标签的continue会达到标签的位置,并重新进入紧接在那个标签后面的循环。
     //break outer;   带标签的break语句从多重循环体的内部跳出到标号所标志的那层循环,并从标号标志的那层循环后面的语句继续执行。
     }
    }
   }
  }
}

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

回复 使用道具 举报
//return; 执行到此语句,下面不执行,将值返回给系统。
     //break;  执行到此语句本次内循环结束,
     //continue  执行到此语句继续向下执行
     //continue outer;   执行到此语句结束本次内循环,继续本次外循环
//break outer; 结束外循环,实际是整个循环结束

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

回复 使用道具 举报
1、//return;执行return后就会停止执行函数中所有下边的代码,然后返回函数,整个函数都停止执行,但如果在try()finally{}中,如果在try中执行了return,依然会先执行finally,在return,而且finally不会改变return返回的值  例如:
public class Test {
public static void main(String[] args) throws Exception {
                System.out.println(fun());
}

public static int fun() throws Exception {
                int i = 0 ;                            //给i附初始值
                try {
                        return i;                          //return i,此时i的值是初始值0
                }finally {
                        ++i;                               //给i自加1,但最后return返回的值依然是初始值0,所以finally无法改变返回值
                        System.out.println("finally");     //先打印finally再执行return
                }
        }
}
2、//break;停止并跳出当前方法或循环体,但还会执行函数中其他的方法,还用在switch中。
//continue:跳出当前一次的循环,继续下一次循环。
以下两个也待大神指点
//continue outer;
//break outer;

点评

请您去更改真实名字  发表于 2012-8-10 20:18
回复 使用道具 举报
public class B {

public static void main(String[] agrs){

  outer:  //标签
  for(int i = 0;i<5;i++){
   for(int j = 0;j <4; j++){
    if(j==2){
    //return;//返回值给调用者,并结束这个方法。
     //break;//结束当前循环,就拿这个程序来说,结束内循环。
     //continue;//结束当前循环的这次循环,继续下一次循环。其和break单独使用时,下面不能写任何语句,因为执行不到。
     //continue outer;//跳出当前的循环,跳到标签处,继续执行标签后面的语句。这个语句和下面的break 标签名;这两条语句一般用于循环嵌套中。
     //break outer; //跳出标签所指循环。执行这个所指循环后面的语句。
以上两条的区别是:
     }
    }
   }
  }
}
回复 使用道具 举报
接上面:continue oute是结束当前的循环,继续执行标签所指的循环。
            而break outer是直接结束标签所指的循环。
标签就是循环的名字。
break和continue还有一个区别就是break还可以用于switch语句中,而continue只能用于循环语句。
回复 使用道具 举报
刘学 中级黑马 2012-8-10 21:09:03
7#
谢谢回答,明白了,问题已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马