try和finally中有return时,执行结果总结
finally和try中都有return:
如果在finally中和try中都包含return语句,将会直接返回finally中return的内容(不管什么数据类型),不 再去执行try中的return语句
public static int nw() { // 最后返回值为20 int i = 10; try { return i; } finally { i = 20 ; return i ; } }
try中有return语句finally中没有return
说明:在执行try中的return语句之前会先去执行finally中的代码,再去执行try中的return语句;
如果try中return返回的是对象,在finally中的代码对try中return的对象修改,return返回的值是修改后的值。
public static ArrayList<String> nq() { // 返回[01, 02] ArrayList<String> list = new ArrayList<>(); try { list.add("01"); return list; } finally { list.add("02"); } }
如果try中return返回的是基本数据类型,在finally中的代码对try中return的基本数据类型修改,try中return的值不会被改变。
public static int nn() { // 最后返回值为10 int i = 10; try { return i; } finally { i = 20; } }