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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-张洋 中级黑马   /  2013-2-25 11:33  /  3513 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天竟然得知for(;;){}居然是一个死循环,当然我可以当一个单词记着,这丫就是一个死循环,然后就完了。。

但是我深感不爽,java的规矩里面为什么要这样设计?

这样设计有什么好处?

谢谢大家了

5 个回复

正序浏览
应该说是for循环的规则决定着java会出现这种情况,for中默认是这样的,像楼上说的一样。其实,你可以想一想,java中每个东西都有自身默认的值,而且,那些看似不确定的,其实都是确定的,就拿接口 Iterator<E>来说吧,看似这E是不不确定的类型,但是确实固定的,就是你传入什么类型就是什么类型。
所以,每个事物在一出现的时候,都必须有各自的初始值。举个例子说吧,就说人吧,出生了就有手脚,五官等等。java也是一样的。所以,
回复 使用道具 举报
死循环也是一个功能啊,可以用break跳出循环。
循环就是一段代码重复执行。有时候要求复杂,不能简单地用for(;;)来判断运行时间。
可以在死循环内部再重新定义跳出条件。
回复 使用道具 举报
for循环如果不定义条件表达式,则默认条件为true. 所以是死循环.
这样做有利也有弊.  
利是这样很方便,简单.
弊来说倒感觉不大,除非无意间写错了.

什么存在就有存在的意义..  如果程序员不谨慎写成这样了, 要JVM报错么? 容错就太低了.  
个人理解.
回复 使用道具 举报
  1. for(初始化表达式:循环条件表达式:循环后的操作表达式)
  2. {
  3. 执行语句;
  4. }
  5. 不能说for(::){}被java规定它是一个死循环,而应该说,在for语法的规定下,按照条件执行下来后,它的表现形式成为了一种死循环
复制代码
回复 使用道具 举报
for(;;)
和while(true){}是一样的,for和while()也是可以互换的,唯一的区别,for()里定义的是局部变量,而while()内定义的变量必须要使用时定义好.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马