8000
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents f404d60 + 46791a8 commit 7737955Copy full SHA for 7737955
docs/basics/java-basic/order-about-finllly-return.md
@@ -3,4 +3,31 @@
3
`try()` ⾥⾯有⼀个`return`语句, 那么后⾯的`finally{}`⾥⾯的code会不会被执⾏, 什么时候执⾏, 是在`return`前还是`return`后?
4
5
6
-如果try中有return语句, 那么finally中的代码还是会执⾏。因为return表⽰的是要整个⽅法体返回, 所以,finally中的语句会在return之前执⾏。
+如果try中有return语句, 那么finally中的代码还是会执⾏。因为return表⽰的是要整个⽅法体返回, 所以,finally中的语句会在return之前执⾏。
7
+
8
+但是return前执行的finally块内,对数据的修改效果对于引用类型和值类型会不同
9
10
+```java
11
+// 测试 修改值类型
12
+static int f() {
13
+ int ret = 0;
14
+ try {
15
+ return ret; // 返回 0,finally内的修改效果不起作用
16
+ } finally {
17
+ ret++;
18
+ System.out.println("finally执行");
19
+ }
20
+}
21
22
+// 测试 修改引用类型
23
+static int[] f2(){
24
+ int[] ret = new int[]{0};
25
26
+ return ret; // 返回 [1],finally内的修改效果起了作用
27
28
+ ret[0]++;
29
30
31
32
+```
33
0 commit comments