黑马程序员技术交流社区

标题: 这么写,为什么不报错呢? [打印本页]

作者: redsifei    时间: 2015-11-1 13:29
标题: 这么写,为什么不报错呢?
class Test{
        public int test(){
                while(true){
                }
        }
}

作者: 菊花爆满山    时间: 2015-11-1 13:29
无限循环 while(true){} 后面不能跟任何语句 即使是return 否者会报错 因为执行不到嘛 所以即使函数标志有返回值 也不会报错
作者: peide0427    时间: 2015-11-1 15:58
来听课~~~~
作者: gaojing69485542    时间: 2015-11-1 16:39
因为这个while循环只是test()方法里面的一个循环而已,当调用这个test()方法是时候,运行while循环,而while里面什么也没写,因此不报错。
作者: 吃饭工作睡觉    时间: 2015-11-1 17:11
为什么要报错啊?
作者: _let'sgo    时间: 2015-11-1 20:17
编译的时候没有语法错误
作者: BBQ:    时间: 2015-11-1 20:39

加油!加油!加油!加油!加油!
作者: poxiao    时间: 2015-11-1 21:27
因为系统只检测语法的合法性,并不能检测逻辑错误
作者: zhengsx    时间: 2015-11-1 21:56
同意8楼的。
作者: 木子子木    时间: 2015-11-1 22:18
因为这个符合逻辑,是一个死循环而已!
作者: 特立独行    时间: 2015-11-1 22:20
过来看看,同求~
作者: HavaDream    时间: 2015-11-1 23:15
java编译器在编译时只检查程序语法上的错误,但不能检查出逻辑上的错误。此代码符合语法,但在逻辑上出错了,缺少循环体,所以不报错。

作者: xingjiyuan26    时间: 2015-11-1 23:20
8楼+1,但这可能是正常的逻辑,所以没必要报错
作者: zhangdazhi186    时间: 2015-11-2 08:12
同意8楼
作者: 韩文昊    时间: 2015-11-2 09:50
无限循环
作者: fanyafangxf    时间: 2015-11-2 18:04
这理论上是没错的。只不过是死循环。这种错误在实际代码中是很难定位的。要注意养成良好编码习惯来避免这种bug。
作者: jia7604112    时间: 2015-11-2 19:31
感觉挺有意思,来看看别人是怎么回答的
作者: 北极的男娃    时间: 2015-11-2 21:25
只是无限循环 并没有编译错误
作者: 大自然的搬运工    时间: 2015-11-2 21:30
学习到了。。。。2楼+1
作者: chenxianzai    时间: 2015-11-2 22:54
Test方法里的while语句判断后并没有需要执行的语句
作者: 一生1314    时间: 2015-11-3 16:54
无限循环
作者: redsifei    时间: 2015-11-3 20:47
poxiao 发表于 2015-11-1 21:27
因为系统只检测语法的合法性,并不能检测逻辑错误

但是方法要求有返回值啊...
作者: poxiao    时间: 2015-11-3 21:34
redsifei 发表于 2015-11-3 20:47
但是方法要求有返回值啊...

方法有返回值,但是你不返回一个值的话也是合法的




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