File tree Expand file tree Collapse file tree 1 file changed +13
-7
lines changed
Expand file tree Collapse file tree 1 file changed +13
-7
lines changed Original file line number Diff line number Diff line change @@ -432,15 +432,21 @@ final关键字主要用在三个地方:变量、方法、类。
432432
433433下面这部分内容来自issue:<https://github.com/Snailclimb /JavaGuide /issues/190> 。
434434
435- **关于返回值 :**
435+ **注意 :** 当try语句和finally语句中都有return语句时,在方法返回之前,finally语句的内容将被执行,并且finally语句的返回值将会覆盖原始的返回值。如下:
436436
437- 如果try语句里有return,返回的是try语句块中变量值。
438- 详细执行过程如下:
437+ ```java
438+ public static int f (int value ){
439+ try {
440+ return value * value;
441+ } finally {
442+ if (value == 2 ){
443+ return 0 ;
444+ }
445+ }
446+ }
447+ ```
439448
440- 1. 如果有返回值,就把返回值保存到局部变量中;
441- 2. 执行jsr指令跳到finally语句里执行;
442- 3. 执行完finally语句后,返回之前保存在局部变量表里的值。
443- 4. 如果try,finally语句里均有return,忽略try的return,而使用finally的return.
449+ 如果调用 `f (2 )`,返回值将是0,因为finally语句的返回值覆盖了try语句块的返回值。
444450
445451## 33 Java序列化中如果有些字段不想进行序列化,怎么办?
446452
You can’t perform that action at this time.
0 commit comments