本帖最后由 jingyarufeng 于 2016-8-14 11:51 编辑
public static int abc() { // 这里需要一个int型的返回值
// for(;;) {} //编译器认为你这里定义了无限循环,是要达到某种条件的时候才会跳出循环
//所以这时候你的return语句应该写在循环的里面 定义在外面就会报错(当然这个错是代码不可达的错误 )
//----------------------------------以下部分个人推断---------------------------------------
// 但是我无限循环里什么如果什么都不写编译器也不知道我无限循环到底什么时候停止
// 所以它也是没有办法知道我有没有返回..在哪返回(循环里还是外面?外面我更找不到).所以,你懂得...
//-------------------------------------------------------------------------------------
/*while (true) {
break; //这里用break不在外面加return的话也不行,如果循环结束了,方法体也结束了.还没有返回值,编译不能通过
}
return 1;*/ //总的来说;方法定义了返回值类型,就一定要给返回值
return 1; //定义了无限循环没加返回还不报错的原因是,这么写可以保证程序的正常运行,不会抛出异常,所以可以编译通过
//上面return是强迫症 //相当于绕过了编译器的检查
}
以上是老师帮我解答以及加上自己的理解,
因为是周末,所以没好意思细问老师,不过我觉得老师讲解的已经非常到位了,如果我自己的理解里还有什么不对的话,那就可能是我太爱钻牛角尖了...感谢黑马和黑马的老师们在周末还抽出时间来帮学生解答问题...选择黑马,绝B没错! |