日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中finally与return的测试方法

發布時間:2025/6/15 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中finally与return的测试方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

直入正題,測試程序如下,看執行結果和你想的是否一致?

public class ReturnTest {public static void main(String[] args) {System.out.println("=============test1==================");System.out.println(test1());System.out.println("===============================");System.out.println("=============test1_1==================");System.out.println(test1_1());System.out.println("===============================");System.out.println("\n============test2===================");System.out.println(test2());System.out.println("===============================");System.out.println("\n============test2_1===================");System.out.println(test2_1());System.out.println("===============================");System.out.println("\n============test3===================");System.out.println(test3());System.out.println("===============================");System.out.println("\n============test3_1===================");System.out.println(test3_1());System.out.println("===============================");}public static String test1() {String a = "in try";try {return a;} catch (Exception e) {} finally {a = "in finally";System.out.println("do finally");}return a;}public static String test1_1() {String a = "in try";try {return a;} catch (Exception e) {} finally {a = "in finally";System.out.println("do finally");return a;}}public static int test2() {int a = 1;try {return a;} catch (Exception e) {} finally {a = 2;System.out.println("do finally");}return a;}public static int test2_1() {int a = 1;try {return a;} catch (Exception e) {} finally {a = 2;System.out.println("do finally");return a;}}public static Helper test3() {Helper a = new Helper();a.a = 1;try {return a;} catch (Exception e) {} finally {a.a = 2;System.out.println("do finally");}return a;}public static Helper test3_1() {Helper a = new Helper();a.a = 1;try {return a;} catch (Exception e) {} finally {a.a = 2;System.out.println("do finally");return a;}}static class Helper {int a;public String toString() {return String.valueOf(a);}}}

結果如下:

=============test1================== do finally in try =============================== =============test1_1================== do finally in finally ===========================================test2=================== do finally 1 ===========================================test2_1=================== do finally 2 ===========================================test3=================== do finally 2 ===========================================test3_1=================== do finally 2 ===============================

很好理解了。

#結論:

在try catch塊里return的時候,finally也會被執行。

return 語句會把后面的值復制到一份用來返回,如果return的是基本類型的,finally里對變量的改動將不起效果,如果return 的是引用類型的,改動將可以起效果。

finally里的return語句會把try catch塊里的return語句效果給覆蓋掉。

看來return語句并不一定都是函數的出口,執行return時,只是把return后面的值復制了一份到返回值變量里去了。看來最佳實踐是:

最好把return放到方法尾而不要在try cath 里return

不要在try catch塊和finally塊里都包含return

如果在try catch塊里return, 則不要在finally塊里操作被return的變量

轉載于:https://my.oschina.net/u/2391658/blog/706512

總結

以上是生活随笔為你收集整理的java中finally与return的测试方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。