Java-finally关键字
Java-finally关键字
1. finally和return的执行顺序
一句话总结:当 try - catch
中使用 break
或 return
返回时,finally
会执行,当调用了 System.exit(0)
退出时,由于直接终止了 JVM,因此 finally
不会执行。
在 try - catch 中的 return 语句执行之后、方法返回之前,程序会将 return 的返回值写入内存中,然后等待 finally 语句执行完,如果在 finally 代码块中,只改变了引用(例如对变量重新赋值),由于 return 时已经将返回值写入了内存中,则不会改变,而如果是改变了同一个变量的值,则会改变。如果 finally 中包含 return 语句,则会覆盖原本的return。例如:
1 | public int getValue() { |
输出 10。
1 | public int getValue() { |
输出 20。
1 | public StringBuilder getValue() { |
输出 "AAABBBCCC"。