Java趣味分享:try & finally
2023-09-27 14:22:39 时间
考虑以下四个测试方法,它们会输出什么?
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。
推荐去我的博客阅读更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
觉得不错,别忘了点赞+转发哦!
相关文章
- 【Java集合】HashMap的get()源码详解以及JDK1.7与JDK1.8的区别
- Java 6 压缩字符串(Compressed String)
- 自然语言处理(NLP)-第三方库(工具包):Stanford CoreNLP(更适合英文数据集)【命名实体识别、分词、词性标注、依存句法分析、语义角色标注】【利用Java开发;有Jar包可供调用】
- 从.Net到Java学习第六篇——SpringBoot+mongodb&Thymeleaf&模型验证
- 【JVM】JVM & Java 体系结构 概述
- 【Java 集合 & 数据结构】优先队列 PriorityQueue
- 【Java 设计模式 · 创建型】浅拷贝 & 深拷贝、原型模式(Prototype Pattern)
- java高级开发技术,附答案+考点
- java后台框架 springmvc整合mybatis框架源码 java图片爬虫 bootstrap html5 mysql oracle
- Java学习笔记之内部类 & API
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- JAVA 或与非运算符 与(&)、或(|)、异或(^)
- Java 获取webapp,Root,classpath,项目等路径工具类
- java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&服务端代码
- java:mac安装&hello world
- java多线程&&设计模式浅了解
- java&postgresql时区总结
- Could not find the required version of the Java(TM)2 Runtime Environment in '(null)' 解决办法
- java中Date日期类型的大小比较
- 在Java中怎样把数组转换为ArrayList?
- Java EE 开发环境搭建
- 我的Android进阶之旅------>解决错误: java.util.regex.PatternSyntaxException: Incorrect Unicode property
- 我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.
- Java语言实现简单FTP软件------>FTP软件远程窗口的实现(六)
- 我的Java开发学习之旅------>Eclipse 项目有红感叹号解决之道