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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 完美恋爱 高级黑马   /  2013-11-15 13:56  /  1396 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 完美恋爱 于 2013-11-15 19:52 编辑

class aaa
{
        public static void main(String[] args)
        {
                for(int i = 0; i < 5; i++)
                {
                        continue;
                        System.out.println("哈哈");
                }
        }
}

请问这里面的i++能执行到吗?为什么能执行到?

9 个回复

倒序浏览
是可以执行的,只是for循环的基本知识
for(int i = 0; i < 5; i++)
                {
                        continue;
                        System.out.println("哈哈");
                }

在你上面的代码中 把int  i=0  看做是第一步  这里为a
                                   i < 5   为  b
                                 i++   为   c
你下面的大括号中的为  d

for循环的基本执行顺序是  先执行a 并且只执行一次,是为了给某些值初始化的,就像你这里的 i
然后执行判断即为  b 再次执行循环语句  d 在做条件改变   c接着又开始执行判断 b  之后在  b d c之间形成循环直到判断条件b不成立才退出循环  。还有你的continue只是不执行本次循环的下面的代码了,,如果数break的话  就跳出循环  不在循环了

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
To + 1 + 2 很给力!

查看全部评分

回复 使用道具 举报
雪龙 发表于 2013-11-15 14:15
是可以执行的,只是for循环的基本知识
for(int i = 0; i < 5; i++)
                {

可是既然因为有continue所以不能执行下面的输出语句了,那按照顺序,i++在输出语句的下面,按理说也不执行才对啊!
回复 使用道具 举报
D:\1.png
continue是结束本次循环进行下次循环,所以运行到continue时 就不会运行下面的语句了,而去for中运行执行i++;在运行判断语句;
回复 使用道具 举报
是可以执行的,continue关键字的含义是跳出当前的循环,这里所说的当前的循环是指不执行continue语句之后的语句,就是说sop(“哈哈”)永远不会执行,你可以这样理解:对于一个循环次数为i的for循环中使用了continue的话,此时会执行的代码就是:①和④
                                       ① i=0;  //这是for循环的第一部分
                                       ② continue;
                                       ③sop("哈哈");//②③是for循环的第二部分,想要执行,需满足条件
                                       ④i++;//这是for循环的第三部分
而对于break的话,就又不一样了,break跳出的是整个for循环,就是说①②③④都不会执行了。
                             
回复 使用道具 举报
这里的i++是可以执行到的。因为continue的意思是:结束当前循环,且continue之后的所有语句都将不再执行
在这里的意思就是continue;下面的语句System.out.println("哈哈");将不会执行到,是废代码。所以编译的时候就会报错:
Demo.java:8: 错误: 无法访问的语句
                        System.out.println("哈哈");
                        ^
1 个错误

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
To + 1 + 2 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 天ya~_琼楼 于 2013-11-15 17:34 编辑

break和continue下边不要写代码了,执行不到的,属于废代码,编译时会提示错误。
continue是跳出本次循环,继续下次循环,我们可以从下边代码看出:
  1. class aaa
  2. {
  3.        public static void main(String[] args)
  4.        {
  5.                 for(int i = 0; i < 5; i++,System.out.println("hehe"))
  6.                  {
  7.                           continue;
  8.                         
  9.                  }
  10.          }
复制代码
代码中System.out.println("hehe")会与i++一起执行,输出结果有5次hehe,由此证明,i++被执行了。
回复 使用道具 举报
张鹏 中级黑马 2013-11-15 17:21:08
8#
continue;是跳过当次循环后面的语句,循环不终止
break; 是从此处终止循环

for中的三个表达式语句是:
第一个:for循环开始执行,但只执行一次,也就是初始化语句
第二个:循环控制语句,为false时循环结束
第三个:在for语句{}里的语句执行后执行,每次循环都执行一次
            它是不受continue;控制的,那你想想如果它受continue;控制
            那么continue;还有意义么?岂不等同于break;?

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
To + 1 + 2 多来云七活跃啊

查看全部评分

回复 使用道具 举报
星星Fighting 发表于 2013-11-15 16:11
是可以执行的,continue关键字的含义是跳出当前的循环,这里所说的当前的循环是指不执行continue语句之后的 ...

谢谢了哈!
回复 使用道具 举报

大家互相帮忙,一起加油哈!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马