国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

談談Java中try-catch-finally中的return語句

2019-11-26 14:39:54
字體:
來源:轉載
供稿:網友

我們知道return語句用在某一個方法中,一是用于返回函數的執行結果,二是用于返回值為void類型的函數中,僅僅是一個return語句(return ;),此時用于結束方法的執行,也即此return后的語句將不會被執行,當然,這種情況下return語句后不能再有其它的語句了。

在try-catch-finally語句中使用return語句遇到了一些疑問

代碼一:

static int intc(){int x =0;try{x=1;return x;}finally {x = 3; }}

代碼二:在上面那段代碼的finally語句中加入了return語句

static int intc(){int x =0;try{x=1;return x;}finally {x = 3;return x;}} 

代碼三:

static int intc(){int x =0;try{x=1;return x;}finally {x = 3;return 0;}} 

那么這三個方法的執行結果是多少呢?

代碼一:返回1;
代碼二:返回3;
代碼三:返回0;

其中的原理是怎么回事呢?

  原因是java虛擬機在執行具有返回值的方法時,會在本地變量列表中創建一塊區域來存儲方法的返回值,在執行返回語句時便會從這個區域中讀取值進行返回。

  代碼一中在try中將1賦值給變量x,然后將變量x的值復制到存儲返回值的區域,最后返回值區域存儲的就是1,執行返回語句時便返回一。

  而在代碼二中,同樣將1賦值給變量x,然后將x的值復制到存儲返回值的區域,此時返回值的區域的值為1,然后跳轉到finally語句中,此時將3賦值給局部變量x,然后在將x的 值復制到存儲返回值的區域,最后執行返回語句,讀取到的返回區域中的值就是3.

  代碼三中,try中執行的語句是一樣的,跳轉到了finally語句中后,將3賦值給局部變量,然后將0賦值到存儲返回值的區域,最后執行返回語句,讀取到的返回區域中的值就是 0,所以就返回0。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄冈市| 延长县| 和平县| 乌审旗| 万全县| 读书| 陆河县| 德兴市| 武功县| 平阴县| 玛纳斯县| 凤城市| 扬州市| 珠海市| 马山县| 德安县| 漳平市| 哈尔滨市| 越西县| 东山县| 时尚| 三明市| 富蕴县| 桐庐县| 浪卡子县| 阳东县| 甘孜县| 察哈| 印江| 玉环县| 潍坊市| 九江市| 平乡县| 南宁市| 江门市| 花莲市| 濮阳市| 三原县| 蒙山县| 柯坪县| 安平县|