博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java趣味分享:try/finally
阅读量:6446 次
发布时间:2019-06-23

本文共 1228 字,大约阅读时间需要 4 分钟。

考虑以下四个测试方法,它们会输出什么?

public class Test {

public static void main(String[] args) {

System.out.println(test1());

System.out.println(test2());

System.out.println(test3());

System.out.println(test4());

}

private static int test1() {

int i = 1;

try {

return i;

} catch (Exception e) {

e.printStackTrace();

} finally {

i = 0;

}

return i;

}

private static int test2() {

int i = 1;

try {

return i;

} catch (Exception e) {

e.printStackTrace();

} finally {

i = 0;

return i;

}

}

private static User test3() {

User user = new User("u1");

try {

return user;

} catch (Exception e) {

e.printStackTrace();

} finally {

user = new User("u2");

}

return null;

}

private static User test4() {

User user = new User("u1");

try {

return user;

} catch (Exception e) {

e.printStackTrace();

} finally {

user.setName("u2");

}

return null;

}

}

public class User {

public User(String name) {

this.name = name;

}

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public String toString() {

return name;

}

}

答案如下:

1

0

u1

u2

结论

1、不管try,finally都会执行;

2、在try中return,在finally执行前会把结果保存起来,即使在finally中有修改也以try中保存的值为准,但如果是引用类型,修改的属性会以finally修改后的为准;

3、如果try/finally都有return,直接返回finally中的return。

转载地址:http://ynvwo.baihongyu.com/

你可能感兴趣的文章
分享一个C#自定义事件的实际应用
查看>>
第十八章:并发程序的基本实现( 多进程 )
查看>>
【小总结】
查看>>
ftp下载文件失败get: Access failed: 550 Failed to open file. (t1.log)
查看>>
记录一下自己常用的maven工程的pom.xml模板
查看>>
LINUX下安装和配置WEBLOGIC10.0.3
查看>>
【Zookeeper】源码分析之服务器(三)之LeaderZooKeeperServer
查看>>
继续过中等难度的题目
查看>>
GIT入门笔记(3)- git中的一些概念和原理
查看>>
View的measure机制
查看>>
SDWebImage源码解读之干货大总结
查看>>
Win7无法安装Flash Player怎么办
查看>>
jquery ui 与 easy ui同时引入 展示效果冲突的问题
查看>>
Spring注解@Resource和@Autowired区别对比
查看>>
HDU 2037 今年暑假不AC(贪心,区间更新,板子题)
查看>>
move_uploaded_file
查看>>
Codeforces Round #265 (Div. 2) B. Inbox (100500)
查看>>
算法笔记_190:历届试题 幸运数(Java)
查看>>
奇怪的报错---待解决
查看>>
学习Angularjs向数据库添加数据
查看>>