看了部分別人的答案,本身最後仍是想要總結一下。該篇文章是最好的一篇總結,在我認爲。有錯誤的地方,還望之處。轉載請告知link地址。tankyou!!spa
在try語句中,try要把返回的結果放置到不一樣的局部變量當中,執行finaly以後,從中取出返回結果,所以,即便finaly中對變量進行了改變,可是不會影響返回結果,由於使用棧保存返回值,即便在finaly當中進行數值操做,可是影響不到以前保存下來的具體的值,因此return影響不了基本類型的值,這裏使用的棧保存返回值。而若是修改list,map,自定義類等引用類型時,在進入了finaly以前保存了引用的地址, 因此在finaly中引用地址指向的內容改變了,影響了返回值。
對象
int test() {blog
int x = 1;io
try {class
x++;test
returnx;變量
} finally {List
x++;map
}數據類型
}
public staticvoid main(String[] args) {
try {
Test01 test01 =new Test01();
System.out.println(test01.test());;
} catch (Exceptione) {
e.printStackTrace();
}
}
publicstatic List<String> test10(){
List<String> strlist =new ArrayList<String>();
strlist.add("zs");
strlist.add("ls");
strlist.add("ww");
strlist.add("mz");
try{
strlist.add("wq");
returnstrlist;
} finally {
strlist.add("yyy");
}
}
public staticvoid main(String[] args) {
try {
Test01 test01 =new Test01();
System.out.println(test01.test10());;
} catch (Exceptione) {
e.printStackTrace();
}
}
以上就是個人總結,若是個人總結對你有幫助,請點個贊。tankyou!!