转载自 Java趣味分享:try/finally

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

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。

Java趣味分享:try/finally相关推荐

  1. 【Java】Java趣味分享:try finally

    1.概述 考虑以下四个测试方法,它们会输出什么? public class Test {public static void main(String\[\] args) {System.out.pri ...

  2. java培训分享:java培训架构师学习线路图

    本期java教程分享主要是讲解关于java培训架构师方面的内容,主要针对java架构师的学习线路图进行一个知识点的概括,下面来看看学习java架构师都需要了解哪些内容吧. java培训分享:java培 ...

  3. java培训分享:学习java开发的优势是什么

    想要进入到互联网行业的小伙伴,经常比较纠结学那个学科比较好,目前java.web前端.Python等都是非常热门的行业,前景也是比较好的,选择java学科的人比较多,那么学习java开发的优势是什么呢 ...

  4. java培训分享:学习Java需要什么软件

    在参加java培训过程中学习java技术,需要用到很多辅助工具,这些辅助工具是具有多功能性和实用性的,从代码构建到bug压缩.学习这些工具可以帮助您提高代码的质量,并成为一个更高效的Java开发人员. ...

  5. 好程序员Java教程分享之jvm篇

    好程序员java教程分享之jvm篇,在前面的文章中,介绍了JVM内存模型分为:堆区.虚拟机栈.方法区.本地方法区和程序计数器,其中堆区是JVM中最大的一块内存区域,在Java中的所有对象实例都保存在此 ...

  6. 好程序员Java教程分享JavaScript面试问题及答案(一)

    好程序员Java教程分享JavaScript面试问题及答案(一) 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个 ...

  7. java static关键字_好程序员Java教程分享static关键字的理解

    好程序员Java教程分享static关键字的理解,static关键字含义可以理解为静态的. 1. 当其修饰属性时,该属性为整个类公有,所有的对象操作的都是同一个静态属性.所以调用时应该使用类名去调用, ...

  8. hibernate savealiasentity 保存后id为空_好程序员Java教程分享Java面试题之Hibernate

    好程序员Java教程分享Java面试题之Hibernate 1.简书一下Hibernated的开发流程 第一步:加载Hibernate的配置文件,读取配置文件的参数, 第二步:创建SessionFac ...

  9. Java培训分享:零基础怎么学习Java?

    最近几年,有很多小伙伴都比较关注"零基础怎么学习Java?"这个问题,因为很多小伙伴都是从其他行业转型来学Java的,都很担心自己学不会,那么来看看下面的详细介绍吧. 零基础怎么学 ...

最新文章

  1. RAID详解[RAID0/RAID1/RAID10/RAID5]
  2. 我们如此努力,也不过是个普通人
  3. Android Linux下的常用命令行
  4. what do we lack as a student?
  5. C语言main()函数详解
  6. sshd_config配置详解
  7. C#中Socket通信编程的同步实现
  8. Servlet要点、请求与响应
  9. (转)ASP.NET Core 企业开发架构概述
  10. [poj3280]Cheapest Palindrome_区间dp
  11. 【ESP8266】发送HTTP请求
  12. php 5.4 +iis+mysql_IIS+FastCGI+PHP5.4.4搭建PHP环境
  13. 拓端tecdat|R语言作图不显示中文解决办法,如何使用中文字体
  14. android ListView刷新抢占屏幕焦点
  15. 2021-07-21淘宝网第二次尝试
  16. SAP-MM-PA精解分析系列之供应商(02)-账户组解析
  17. 南阳oj STL分类练习
  18. LIO-SAM_based_relocalization运行kitti回环序列并保存轨迹评估(一)——————源码的分析
  19. jmeter之PerfMon Metrics Collector自定义查看cpu百分比
  20. The Chivalrous Cow(BFS+最短路径)

热门文章

  1. [SpringBoot2]welcomefavicon
  2. 数学中R,Z,N,Q都代表什么意思?
  3. LeetCode 138 复制带随机指针的链表-中等
  4. Fliptile POJ - 3279 (翻转)(二进制+对第一行暴力遍历翻转的位置)
  5. github 检查代码质量_Android(8): 代码质量检查
  6. [2020多校A层11.25]最大K段和(反悔贪心)
  7. P2167 [SDOI2009]Bill的挑战
  8. 牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案
  9. [学习笔记] 单位根反演
  10. CodeForces616:Educational Round 5