在Java中当try、finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子加以说明:

第一种情况:try中包含return语句,finally中不包含

Java代码  
  1. public class TestTry {
  2. static String s="";
  3. public static void main(String args[]){
  4. s = test1();
  5. System.out.println("8  "+s);
  6. }
  7. public static String test1(){
  8. try{
  9. System.out.println("try.....");
  10. return s = "a";
  11. }
  12. finally{
  13. s="b";
  14. System.out.println("17  "+s);
  15. }
  16. }
  17. }

这里我们定义了一个字符串 s,在try里面将"a"赋值给s,并直接返回,在finally里面把"b"赋值给s,最终s的值是a还是b呢?下面是执行的结果

Java代码  
  1. try.....
  2. 17  b
  3. 8  a

我们发现最后的结果是a,但是b优先于a打印出来了,这是为什么呢?通过debug单步调试我们发现,在执行try中的return之前会先执行finally中的代码,之后再执行return语句。如果finally中也包含return语句,会出现什么情况呢,我们看第二种情况。

第二种情况:try,finally中都包含return语句

我们将上面的代码稍作改动

Java代码  
  1. public class TestTry {
  2. static String s="";
  3. public static void main(String args[]){
  4. s = test1();
  5. System.out.println("8  "+s);
  6. }
  7. public static String test1(){
  8. try{
  9. System.out.println("try.....");
  10. return s = "a";
  11. }
  12. finally{
  13. return s="b";
  14. }
  15. }
  16. }

将finally中的s="b";直接改成return s="b";,会出现什么样的结果呢?字符串s是a还是b呢?

Java代码  
  1. try.....
  2. 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时的执行情况相关推荐

  1. java的tey语句return了_Java中try、finally语句中有return时的执行情况

    在Java中当try.finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子 ...

  2. try catch中 在catch语句中有 return其后面的代码是不执行的

    这只是一个笔记, 如题 public function tea(){try{10/0;}catch(\Exception $e){return 123;}$res = JWT::decode(&quo ...

  3. java 中的finally 语句块执行顺序

    2019独角兽企业重金招聘Python工程师标准>>> 参考博文1:https://www.ibm.com/developerworks/cn/java/j-lo-finally/ ...

  4. 11、Java中的分支语句

    Java中的分支语句 作者:韩茹 公司:程序咖(北京)科技有限公司 程序咖:IT职业技能评测平台 网址:https://www.chengxuka.com 任务 1.程序的执行结构 2.分支语句 3. ...

  5. Java中的条件语句

    Java中的条件语句 1.if条件语句 (1)简单的if条件语句 语法如下: if(布尔表达式){语句序列 } ①布尔表达式:必要参数,表示最后返回的结果必须是一个布尔值.可以只是一个布尔值变量或者常 ...

  6. Java中return结束循环,Java中break、continue、return在for循环中的使用

    Java中break.continue.return在for循环中的使用 发布时间:2020-09-25 02:01:45 来源:脚本之家 阅读:81 作者:mrr 引言:在使用循环的时候,循环里面带 ...

  7. java中的foreach语句

    在java中,foreach语句是for语句的特殊简化版本,在遍历数组等方面为程序员提供了很大的方便,语法格式如下: for(元素变量 x : 遍历对象 obj) { 引用了x的java语句: } f ...

  8. 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案

    项目场景: 在java中使用JDBC连接mysql数据库时,报以下的错:Exception in thread "main" java.sql.SQLException: The ...

  9. [JAVA]java中的打印输出语句

    java中的打印语句分为三种: System.out.print(); System.out.println(); System.out.printf(); 1.System.out.print(); ...

最新文章

  1. Restify Api 开发经验
  2. 学号程序编辑 c语言,C语言程序设计实习报告 行编辑器 学生管理系统
  3. Prometheus+Grafana可视化监控SpringBoot项目
  4. MySQL/MariaDB数据库备份与恢复
  5. 买车,给点建议和意见
  6. Centos7.x 安装JDK、Jenkins、Jmeter、ant
  7. 乘业绩创新高的东风,董明珠续任格力董事长几无悬念
  8. 激活剂、天梯与火石:从ASC 19解读产学结合的关键密码
  9. MATLAB图中图绘制(局部放大图)
  10. Java方法和数组练习
  11. 立体仓库货物识别率99.9%!AI让仓储管理事半功倍
  12. android 客户端 和 新浪微博如何打通的
  13. mysql删除表的命令
  14. 打造全新的网站群管理系统
  15. 操作系统到底是个什么鬼?(一)
  16. 百业升级 共启新程——CDEC2021中国数字智能生态大会武汉站今日举行
  17. SQL语言的四大功能
  18. 迄今为止10大最佳SDN解决方案
  19. ACL 2022:梳理视觉语言导航的任务、方法和未来方向|AI Drive
  20. 风变编程—Python基础和爬虫精进

热门文章

  1. 【格局】一张图看懂全球人工智能竞争格局|湾区人工智能
  2. 人人都需要专利的原因
  3. python标准库的图像处理模块_PIL:Python Imaging Library(图像处理标准库)
  4. 英伟达吞并ARM的交易计划失败!
  5. 三星Galaxy S22系列快充规格曝光:只可比肩iPhone 13Pro Max
  6. 转转集团Q4手机行情:二手市场iPhone交易量今年以来首次“反弹”
  7. 小米MIX 4屏幕细节曝光:首发柔性曲面屏下前摄
  8. 三年亏了近50亿,网易云音乐终于熬到上市了
  9. 重庆木叶村,每天被忍者迷骚扰500次
  10. 微信在朋友圈强行置顶视频号直播分享,引网友疯狂吐槽:又丑又烦!