Java中try、finally语句中有return时的执行情况
在Java中当try、finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子加以说明:
第一种情况:try中包含return语句,finally中不包含
- public class TestTry {
- static String s="";
- public static void main(String args[]){
- s = test1();
- System.out.println("8 "+s);
- }
- public static String test1(){
- try{
- System.out.println("try.....");
- return s = "a";
- }
- finally{
- s="b";
- System.out.println("17 "+s);
- }
- }
- }
这里我们定义了一个字符串 s,在try里面将"a"赋值给s,并直接返回,在finally里面把"b"赋值给s,最终s的值是a还是b呢?下面是执行的结果
- try.....
- 17 b
- 8 a
我们发现最后的结果是a,但是b优先于a打印出来了,这是为什么呢?通过debug单步调试我们发现,在执行try中的return之前会先执行finally中的代码,之后再执行return语句。如果finally中也包含return语句,会出现什么情况呢,我们看第二种情况。
第二种情况:try,finally中都包含return语句
我们将上面的代码稍作改动
- public class TestTry {
- static String s="";
- public static void main(String args[]){
- s = test1();
- System.out.println("8 "+s);
- }
- public static String test1(){
- try{
- System.out.println("try.....");
- return s = "a";
- }
- finally{
- return s="b";
- }
- }
- }
将finally中的s="b";直接改成return s="b";,会出现什么样的结果呢?字符串s是a还是b呢?
- try.....
- 8 b
我们发现最后的打印结果是b。
结论:1.无论try里面有没有return语句,finally语句一定都会执行(不愧是finally,名字起的好)。
2.如果finally中没有return语句,try里面有return,那么在执行try中的return语句之前会先去执行finally中的代码,再去执行try中的return语句;如果在finally中也包含return语句,将会直接返回,不再去执行try中的return语句。
Java中try、finally语句中有return时的执行情况相关推荐
- java的tey语句return了_Java中try、finally语句中有return时的执行情况
在Java中当try.finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子 ...
- try catch中 在catch语句中有 return其后面的代码是不执行的
这只是一个笔记, 如题 public function tea(){try{10/0;}catch(\Exception $e){return 123;}$res = JWT::decode(&quo ...
- java 中的finally 语句块执行顺序
2019独角兽企业重金招聘Python工程师标准>>> 参考博文1:https://www.ibm.com/developerworks/cn/java/j-lo-finally/ ...
- 11、Java中的分支语句
Java中的分支语句 作者:韩茹 公司:程序咖(北京)科技有限公司 程序咖:IT职业技能评测平台 网址:https://www.chengxuka.com 任务 1.程序的执行结构 2.分支语句 3. ...
- Java中的条件语句
Java中的条件语句 1.if条件语句 (1)简单的if条件语句 语法如下: if(布尔表达式){语句序列 } ①布尔表达式:必要参数,表示最后返回的结果必须是一个布尔值.可以只是一个布尔值变量或者常 ...
- Java中return结束循环,Java中break、continue、return在for循环中的使用
Java中break.continue.return在for循环中的使用 发布时间:2020-09-25 02:01:45 来源:脚本之家 阅读:81 作者:mrr 引言:在使用循环的时候,循环里面带 ...
- java中的foreach语句
在java中,foreach语句是for语句的特殊简化版本,在遍历数组等方面为程序员提供了很大的方便,语法格式如下: for(元素变量 x : 遍历对象 obj) { 引用了x的java语句: } f ...
- 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案
项目场景: 在java中使用JDBC连接mysql数据库时,报以下的错:Exception in thread "main" java.sql.SQLException: The ...
- [JAVA]java中的打印输出语句
java中的打印语句分为三种: System.out.print(); System.out.println(); System.out.printf(); 1.System.out.print(); ...
最新文章
- Restify Api 开发经验
- 学号程序编辑 c语言,C语言程序设计实习报告 行编辑器 学生管理系统
- Prometheus+Grafana可视化监控SpringBoot项目
- MySQL/MariaDB数据库备份与恢复
- 买车,给点建议和意见
- Centos7.x 安装JDK、Jenkins、Jmeter、ant
- 乘业绩创新高的东风,董明珠续任格力董事长几无悬念
- 激活剂、天梯与火石:从ASC 19解读产学结合的关键密码
- MATLAB图中图绘制(局部放大图)
- Java方法和数组练习
- 立体仓库货物识别率99.9%!AI让仓储管理事半功倍
- android 客户端 和 新浪微博如何打通的
- mysql删除表的命令
- 打造全新的网站群管理系统
- 操作系统到底是个什么鬼?(一)
- 百业升级 共启新程——CDEC2021中国数字智能生态大会武汉站今日举行
- SQL语言的四大功能
- 迄今为止10大最佳SDN解决方案
- ACL 2022:梳理视觉语言导航的任务、方法和未来方向|AI Drive
- 风变编程—Python基础和爬虫精进
热门文章
- 【格局】一张图看懂全球人工智能竞争格局|湾区人工智能
- 人人都需要专利的原因
- python标准库的图像处理模块_PIL:Python Imaging Library(图像处理标准库)
- 英伟达吞并ARM的交易计划失败!
- 三星Galaxy S22系列快充规格曝光:只可比肩iPhone 13Pro Max
- 转转集团Q4手机行情:二手市场iPhone交易量今年以来首次“反弹”
- 小米MIX 4屏幕细节曝光:首发柔性曲面屏下前摄
- 三年亏了近50亿,网易云音乐终于熬到上市了
- 重庆木叶村,每天被忍者迷骚扰500次
- 微信在朋友圈强行置顶视频号直播分享,引网友疯狂吐槽:又丑又烦!