8000 Merge pull request #51 from 947133297/master · coder-chenhao/toBeTopJavaer@7737955 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7737955

Browse files
authored
Merge pull request hollischuang#51 from 947133297/master
补充finally块内的修改数据测试
2 parents f404d60 + 46791a8 commit 7737955

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

docs/basics/java-basic/order-about-finllly-return.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,31 @@
33
`try()` ⾥⾯有⼀个`return`语句, 那么后⾯的`finally{}`⾥⾯的code会不会被执⾏, 什么时候执⾏, 是在`return`前还是`return`后?
44

55

6-
如果try中有return语句, 那么finally中的代码还是会执⾏。因为return表⽰的是要整个⽅法体返回, 所以,finally中的语句会在return之前执⾏。
6+
如果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+ try {
26+
return ret; // 返回 [1],finally内的修改效果起了作用
27+
} finally {
28+
ret[0]++;
29+
System.out.println("finally执行");
30+
}
31+
}
32+
```
33+

0 commit comments

Comments
 (0)
0