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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© i蓝蓝蓝天 初级黑马   /  2012-4-29 16:40  /  3536 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  今天看到毕老师讲for和while的区别,先写一段代码吧:
for(int x=0;x<3;x++)
{System.out.println(x);
}
System.out.println(x);
int y=0;
while(y<3)
{System.out.println(y);
}
System.out.println(y);
在进行编译的时候会提示说找不到在for循环外面的那个x的定义。而在while循环外的Y的值却可以输出来。讲到这里毕老师说for和while的区别主要在于这两个变量的作用域的不同,因为x是在for中定义的因此当for循环执行完之后x的值变不存在了。而y定义的是一个全局变量因此它在while训话结束了之后还是可以存在的。但是毕老师所讲的for循环其实也可以写成另外的一种形式:
int x=0;
for(;x<3;x++)
{System.out.println(x);
}
System.out.println(x);
}
这样同样可以编译成功,而且此时x的作用域与y的作用域是一样的。而之前毕老师所讲的那个for和while之间的区别就不存在了。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

8 个回复

倒序浏览
不过还是推荐用
for(int x=0;x<3;x++)
{System.out.println(x);
}
这种方式创建的X变量在for循环结束的时候就没有了,而其他的方法x变量会在整个主程序结束前一直存在,影响内存的使用。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
for(int x=0;x<3;x++)
{System.out.println(x);
}
System.out.println(x);
int y=0;
while(y<3)//while循环下是少了个改变y值的代码吧,如y++,哥们应该写漏了{System.out.println(y);
}
System.out.println(y);

//虽然楼主说的那种没错,但是有时候在循环结束后并不需要保留x的值,如果按楼主说的那样,x不就多占了内存啦,所以说各有各的好处
毕老师不也说啦,只要能用for循环表达出来的,也能用while循环表达,只是在不同的时候看用哪个更合适而已

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
这就是局部变量和全局变量的区别嘛,作用域不同而已。
回复 使用道具 举报
马浩 发表于 2012-4-29 17:25
for(int x=0;x

哥们确实写漏了,呵呵。
回复 使用道具 举报
下面的那个不是一个死循环么?
应该还有一种
  1. do{
  2. }while()
复制代码
的循环吧!
回复 使用道具 举报
1  while 与do…while 之间的区别:如果布尔表达式的第一次判断就为false,那么while 循环一次也不执行
2  for 循环的执行过程:
   a  执行变量初始化。
   b  执行条件判断。如果条件判断结果为假,那么退出 for  循环,开始执行循环后面的代码;如果条件判断为真,执行for 循环里面的代码。
   c  执行步进。
   d  重复步骤2。
回复 使用道具 举报
for(;x<3;x++)
少了一点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马