黑马程序员技术交流社区

标题: for循环小疑问 [打印本页]

作者: 曾祥旭    时间: 2013-3-28 12:24
标题: for循环小疑问
本帖最后由 曾祥旭 于 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!");
  }
}
}
作者: 张洪慊    时间: 2013-3-28 12:35
本帖最后由 张洪慊 于 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. }
复制代码

作者: _王涛    时间: 2013-3-28 12:46
你的这个问题是,当for循环后面加了 ;  时那么,它就没有了循环体了,{}中的内容也就不是for范围之内的内容了,所有这个结果必然输出一句:Hello World!
作者: tshch1989    时间: 2013-3-28 12:46
二楼正解,你写的for循环中循环体是空的;而后面紧紧是一条输出语句;另一方面如果输出语句是循环体的话应该输出3次hello world
作者: 薛飞    时间: 2013-3-28 13:09
for循环加后“;”,那么for循环就执行结束了,下来该执行其后的代码了,加了{},即为代码块,起到限定作用域的功能,执行打印语句输出:Hello Word!
作者: 李罡    时间: 2013-3-28 13:15
只是表示一个简单的执行语句,没有循环,{}里面如果有其他的变量的话那么该变量仅在{}里起作用,仅此而已
作者: 陆旭东    时间: 2013-3-28 13:19
for循环之后加上;号就表示for循环结束了。之后的打印语句只是在一个代码块中的与for语句放开的独立语句。
作者: 赵喜平    时间: 2013-3-28 13:54
public class Test{
public static void main(String[] args){
  for(int i=0;i<3;i++);  //虽然说循环体为空,但是循环体内还是进行循环,只是没有打印出任何内容,“;”表示循环结束
  {
   System.out.println("Hello World!");//此部分是构造代码块
  }
}
构造代码块:给对象进行初始化,对象一建立就运行,优先于构造函数执行,是给所有对象统一初始化;类中直接大括号中的内容就是构造代码块;不同对象共性的初始化内容;

}
作者: 葛迅    时间: 2013-3-28 17:11
你在for后面加上 ;  就是循环结束了。
但是System.out.println("Hello World!")这代表另一个输出表达式,程序依然读取此代码并输出,跟上面的for没有关系了。
作者: 曹宇    时间: 2013-3-28 21:22
本帖最后由 曹宇 于 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  额  这个我也不懂了。因为目前学到的来说 {}我只知道是构造代码块的情况。。。。可是我明明没有创建对象.......
我也蛋疼了!!!!!


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





作者: 曾祥旭    时间: 2013-3-29 09:23
斑竹等着接我哈,云3这个大家庭我来了,嘿嘿。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2