一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 談談Java中try-catch-finally中的return語句

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

2020-03-23 12:44守、護 JAVA教程

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

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

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

代碼一:

?
1
2
3
4
5
6
7
8
9
static int intc(){
int x =0;
try{
x=1;
return x;
}finally {
x = 3;
}
}

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

?
1
2
3
4
5
6
7
8
9
10
static int intc(){
int x =0;
try{
x=1;
return x;
}finally {
x = 3;
return x;
}
}

代碼三:

?
1
2
3
4
5
6
7
8
9
10
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。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人在女人下面狂躁 | 精品精品国产自在久久高清 | 精品日韩二区三区精品视频 | 欧美视频一区二区专区 | 狠狠色综合久久婷婷色天使 | 99久久精品国产片久人 | 九九精品视频在线观看九九 | 日韩视频免费一区二区三区 | 精品久久免费观看 | 亚洲欧美日韩中文高清一 | 国产成人yy精品1024在线 | 貂蝉沦为姓奴小说 | 欧美日韩视频在线一区二区 | 2019自拍偷拍视频 | a级毛片毛片免费很很综合 a级黄色视屏 | 亚洲欧美国产在线 | 亚洲日本中文字幕天堂网 | 闺蜜调教我做她的脚奴 | 色狠狠色狠狠综合天天 | 四虎网址在线 | rylskyart系列视频 | 5g影院天天5g天天爽大陆 | fuqer日本 | 波多野结衣一区免费作品 | 极品妖艳许清赵丽全文免费阅读 | 特黄特级毛片免费视 | 国产亚洲精品一区二区在线播放 | 亚洲国产区 | 亚洲系列国产系列 | 美国女网址www呦女 美国复古性经典xxxxx | 精品久久99麻豆蜜桃666 | 狠狠色婷婷日日综合五月 | 天天做天天爱天天爽综合区 | 久久高清一级毛片 | 日本不卡视频免费的 | 欧美极品摘花过程 | 动漫美女人物被黄漫小说 | 四虎精品成人a在线观看 | 女人特黄大aaaaaa大片 | 国产五月天在线 | 护士的小嫩嫩好紧好舒服 |