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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾祥旭 中级黑马   /  2013-3-28 12:24  /  2130 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曾祥旭 于 2013-3-28 14:16 编辑

有一个小小的疑问:在for循环语句中,如果
后面加入;不就表示条件结束吗?那么下面的循
环体不应该执行才对啊?求解?

public class Test{
public static void main(String[] args){
  for(int i=0;i<3;i++);
  {
   System.out.println("Hello World!");
  }
}
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 好吧,你25分了~

查看全部评分

10 个回复

倒序浏览
本帖最后由 张洪慊 于 2013-3-28 12:44 编辑
  1. public class Test{
  2. public static void main(String[] args){
  3.   for(int i=0;i<3;i++);
  4. /*
  5. //上面那个for循环相当于什么呢?
  6.   for(int i=0;i<3;i++)
  7.   {
  8.       ;  
  9.   }
  10. //也就是说没有循环体的for循环
  11. */
  12. //下面这个输出语句相当定义在一个代码块内 ,{ }限定其作用域
  13.   {
  14.    System.out.println("Hello World!");
  15.   }

  16. }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
你的这个问题是,当for循环后面加了 ;  时那么,它就没有了循环体了,{}中的内容也就不是for范围之内的内容了,所有这个结果必然输出一句:Hello World!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
二楼正解,你写的for循环中循环体是空的;而后面紧紧是一条输出语句;另一方面如果输出语句是循环体的话应该输出3次hello world

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

回复 使用道具 举报
for循环加后“;”,那么for循环就执行结束了,下来该执行其后的代码了,加了{},即为代码块,起到限定作用域的功能,执行打印语句输出:Hello Word!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
只是表示一个简单的执行语句,没有循环,{}里面如果有其他的变量的话那么该变量仅在{}里起作用,仅此而已
回复 使用道具 举报
for循环之后加上;号就表示for循环结束了。之后的打印语句只是在一个代码块中的与for语句放开的独立语句。
回复 使用道具 举报
public class Test{
public static void main(String[] args){
  for(int i=0;i<3;i++);  //虽然说循环体为空,但是循环体内还是进行循环,只是没有打印出任何内容,“;”表示循环结束
  {
   System.out.println("Hello World!");//此部分是构造代码块
  }
}
构造代码块:给对象进行初始化,对象一建立就运行,优先于构造函数执行,是给所有对象统一初始化;类中直接大括号中的内容就是构造代码块;不同对象共性的初始化内容;

}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
葛迅 中级黑马 2013-3-28 17:11:37
9#
你在for后面加上 ;  就是循环结束了。
但是System.out.println("Hello World!")这代表另一个输出表达式,程序依然读取此代码并输出,跟上面的for没有关系了。
回复 使用道具 举报
本帖最后由 曹宇 于 2013-3-28 21:28 编辑

我是初学者哈,回答可能不对。。。

for在我的理解中 是会执行的。。
一步一步来。。
i初值0 判断<3  正确  然后执行  因为for后面是 ; 号  所以程序执行了一个空语句 就是啥都没  然后执行 i++ 然后 i =1 然后判断i<3 满足 继续  
当i++到3的时候 for循环结束。。。。。。

对于后面{}中的
{
   System.out.println("Hello World!");
  }
以我目前学到的知识来说,这是构造代码块,而它会不会执行 其实我也不知道

我知道当你创建这个Test类的对象的时候,那么这个语句会执行。。。。。我看你代码中有 main函数,估计这应该是个独立运行的类。
在我看来 如果没有别的类创建这个类的对象的时候  那么这个构造代码块应该不会执行吧。。。。

不过 如果 {}之前 加上 static 修饰的话,那么肯定会执行的。。  静态代码块 随着类的加载而执行。

我编译了一次试了试  输出了hello world  额  这个我也不懂了。因为目前学到的来说 {}我只知道是构造代码块的情况。。。。可是我明明没有创建对象.......
我也蛋疼了!!!!!


目前所学就这么多,,,回答有误还望大家吐槽。。




评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 很认真~

查看全部评分

回复 使用道具 举报
斑竹等着接我哈,云3这个大家庭我来了,嘿嘿。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马