我有一节课 - 公共课检查{
public static void main(String[] args) {
System.out.println(new Check().isRight());
}
public boolean isRight(){
try{
return true;
}finally{
return false;
}
}
方法isRight在finally子句中返回true和false,最后它返回false,因为finally子句肯定会被调用,所以什么实际上发生了try里面的数据。 我需要知道输出背后的逻辑原因,我读过但不能正确理解。
答案 0 :(得分:5)
finally
或JVM craches时,才会调用 System.exit()
。
在所有其他情况下,系统会调用finally
,因此会返回false
。怎么样?
当达到return
中的try
时,控件会转移到finally
,您return false
..简单。
浏览official docs以更好地了解这一点。
答案 1 :(得分:2)
您的代码始终返回false,因为finally
块在执行try-catch
语句后始终执行,无论JVM崩溃什么,或System.exit()
为try
其他人已经提到了。
因此,当return true;
块到达finally
语句时,控件将传递给{{1}}块,并返回false(覆盖前一个真值)。
答案 2 :(得分:0)
false
将在那里归还。这就是最终的想法 - 它对事物有了最后的发言权。将调用 finally
,并且会在您的代码中提及false。