談談Java中try-catch-finally中的return語句。本站提示廣大學習愛好者:(談談Java中try-catch-finally中的return語句)文章只能為提供參考,不一定能成為您想要的結果。以下是談談Java中try-catch-finally中的return語句正文
我們曉得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。