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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邹海洋 中级黑马   /  2012-8-31 14:00  /  3755 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

两个最简单的死循环
while(true){}
for(;;){}
为什么前者条件判断里要写true,而后者会默认为true?

评分

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

查看全部评分

11 个回复

倒序浏览
while(true) 不是默认为true,而是里面判断条件一直设定为了true,当它一直为true时,就一直满足条件,它其实是一个无限循环;一般会在while中加入一些判断条件。
for循环的格式:(初始化条件;判断条件;表达式),当要满足for循环里面的判断条件后,才会为true,才会执行。

评分

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

查看全部评分

回复 使用道具 举报
黄珊珊 发表于 2012-8-31 14:12
while(true) 不是默认为true,而是里面判断条件一直设定为了true,当它一直为true时,就一直满足条件,它其 ...

你好,谢谢你的回答 但是你好像没看清我要问的是什么 呵呵
回复 使用道具 举报
邹海洋 发表于 2012-8-31 14:18
你好,谢谢你的回答 但是你好像没看清我要问的是什么 呵呵

while(true){}
for(;;){}
为什么前者条件判断里要写true,而后者会默认为true?
前面条件里面写true是为了让条件一直满足,一直可以执行while体中的代码。
而for什么都不写的时候表示无条件循环。

回复 使用道具 举报
while(true){}
for(;;){}
首先while循环的格式你肯定知道,括号里肯定是一个boolean类型的。
对于for循环,它的格式是for(初始化表达式;判断条件;表达式)
假如你没有判断条件,那么程序就会一直执行下去,就像你跑步,没有规定终点,那你就一直跑,不能停下来,并不是你说的默认的true。而是你没有约束条件来让程序停止。明白了吗?
回复 使用道具 举报
黄珊珊 发表于 2012-8-31 14:24
while(true){}
for(;;){}
为什么前者条件判断里要写true,而后者会默认为true?

为什么while里面什么都不写就不能表示无条件循环呢
回复 使用道具 举报
陈莹 发表于 2012-8-31 14:27
while(true){}
for(;;){}
首先while循环的格式你肯定知道,括号里肯定是一个boolean类型的。

FOR里面的判断条件得出的结果不也是一个BOOLEAN类型的值吗?
回复 使用道具 举报
邹海洋 发表于 2012-8-31 14:32
为什么while里面什么都不写就不能表示无条件循环呢

java体制决定的,这是java的语法规范;大家都通过这个标准来使用java。
回复 使用道具 举报
孙沛 中级黑马 2012-8-31 14:45:26
9#
while中只有true才会进入循环体内,否则不会进入循环
for默认是进入循环体内循环的
回复 使用道具 举报
邹海洋 发表于 2012-8-31 14:35
FOR里面的判断条件得出的结果不也是一个BOOLEAN类型的值吗?

但是现在不是没有条件表达式吗?就没有表达式的值了啊,那就表示没有条件来限制程序的运行,就像你进教室,以前有门,要是开着你就能进,没有开着你就不能进,现在省略了表达式,就相当于没有门了,没有条件来限制程序的运行了。
而且规定for循环中的判断条件表达式可以省略,但是while循环不可以,百度百科中这样解释:
for循环中的"参数初始化表达式"、"条件表达式"和"更新循环变量表达式"都是选择项, 即可以缺省, 但";"不能缺省。省略了初始化, 表示不对循环控制变量赋初值。 省略了条件表达式, 则不做其它处理时便成为死循环。省略了增量, 则不对循环控制变量进行操作, 这时可在语句体中加入修改循环控制变量的语句。
回复 使用道具 举报
谢各位 鲜花掌声 送给大家 呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马