首先是第一种情况:

我们这里由于程序只是单一的,所以后面的代码只有主题部分:

Public class test{

Public static void main(String[] args){

System.out.println(new test().Test());

}

Static int Test(){

Int x=1;

Try{

Return x;

}finally{

++x;

System.out.println(“x=”+x);

}

}

}

这里的打印结果是:

X=2;

1

分析:有程序可知,return在try中,那么finally中的code会在return返回之前执行。

说明:其实具体的执行顺序是这样的,就是执行到了try中的return语句,但是,还没有返回,这时就执行finally中的code,也就是结果已经在返回的结果容器中了,也就是说后面的finally中的x的值对结果没有影响。

接下来是第二种情况:

代码如下:

Static int Test(){

Int x=1;

Try{

Return x;

}finally{

Return ++x;

}

}

这时打印的结果就是:

2

说明:从结果上可以看出,finally中的return的值覆盖掉了try中的值。

第三种情况:返回类对象了

class People

{

String name;

String age;

public String getAge(){

return age;

}

public void setAge(String age){

this.age = age;

}

public String getName(){

return name;

}

public void setName(String name){

this.name = name;

}

public People(){

super();

}

public People instanceName(String name,People p){

p.setName(name);

return p;

}

public People instanceAge(String age,People p){

p.setAge(age);

return p;

}

}

这里是一个测试类:

class  test1

{

public static void main(String[] args)

{

People p = new People();

test1(p);

System.out.println(p.getName());

System.out.println(p.getAge());

}

public static People test1(People p){

try{

System.out.println("try....");

return p.instanceName("name",p);

}finally{

System.out.println("finally.....");

//return p.instanceAge("age",p);

}

}

}

}

结果是:

Try….

Finally…..

Name

另外,如果不将finally中的return注释的话,那结果就是:

Try…

Finally….

Name

Age

说明:有结果可知,执行顺序应该是这样的

结论:

Try中的语句到àreturn 但是还没有返回,然后在执行finally中的语句,

(1)    如果finally中有return时,那么执行到return语句,同样没有返回。

接下来就返回try中返回值,最后返回finally中的返回值。

(2)另一种情况就是,没有return时,同上面,就是不再执行finally中的返回值。

关于finally中的语句和try中的return之间的执行顺序的更多相关文章

  1. 查询语句中select from where group by having order by的执行顺序

    查询语句中select from where group by having order by的执行顺序   1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--w ...

  2. 错误处理之try、catch、finally中的return、throw执行顺序。

    今天遇到一个让人无语的代码块 try { bilSheetService.syncUser(bilWebseviceLog, userId, optType); }catch (Exception e ...

  3. 查询语句中 select from where group by having order by 的执行顺序

    查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中 select 和 from 是必须的,其他关 ...

  4. java中的异常以及 try catch finally以及finally的执行顺序

    java中的 try.catch.finally及finally执行顺序详解: 1.首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个 ...

  5. Qt中连接到同一signal的多个slots的执行顺序问题(4.6以后按连接顺序执行)

    起源 前些天忘记在哪儿讨论过这个问题,今天在csdn又看到有网友问这个问题,而其他网友却无一例外的给出了“无序”这个答案. Manual Qt的问题,当manual中有明确文字说明时,我们应该以Qt的 ...

  6. Qt中连接到同一signal的多个slots的执行顺序问题(现在是看连接顺序,以前是无序的)

    in the order they have been connected 起源 前些天忘记在哪儿讨论过这个问题,今天在csdn又看到有网友问这个问题,而其他网友却无一例外的给出了“无序”这个答案. ...

  7. java中代码块和构造方法以及普通方法的代码执行顺序总结

    说实话,这块真的不好理解啊~都怪jvm  执行顺序搞这么复杂,哼╭(╯^╰)╮ 但是  我们能怎么办,只能研究呗!!! !:首先,毫无置疑的,静态代码块在加载时就执行了,所以肯定是最先执行的.... ...

  8. SQL Server 2008 r2 中 SQL语句提示“对象名无效”,但可执行

    [问题描述]在使用 SQL Server 2008 r2 时,有时在完成SQL书写后,会提示“对象名无效”,而SQL语句可正常执行. [原因]缓存相关. [解决方法]ctrl+shift+R 刷新下, ...

  9. Java中Return和Finally执行顺序的实现

    下面这段代码的执行结果是怎样的呢? publc int test(){ int x; try{ x = 1; return x; }catch(Exception e){ x = 2; return ...

随机推荐

  1. Power Platform Center of Excellence (CoE) 部署完成&主要内容说明

    随着目前国内使用Power Platform的企业越来越多,而在跟客户交付项目时,客户经常想了解平台的一些基本情况: Power Platform 有多少环境,分别是谁创建和管理? Power Pla ...

  2. SpringCloud微服务实战——搭建企业级开发框架(十六):集成Sentinel高可用流量管理框架【自定义返回消息】

    Sentinel限流之后,默认的响应消息为Blocked by Sentinel (flow limiting),对于系统整体功能提示来说并不统一,参考我们前面设置的统一响应及异常处理方式,返回相同的 ...

  3. [atAGC034F]RNG and XOR

    令$N=2^{n}$先将$\forall 0\le i<N,a_{i}$除以$\sum_{i=0}^{N-1}a_{i}$,即变为概率 令$f_{i}$表示$i$的答案(第一次变成$i$的期望步 ...

  4. 基于CarbonData的电信时空大数据探索

    摘要:作为IOT最底层的无线通信网络生成大量与位置相关的数据,用于无线通信网络规划和优化,帮助电信运营商建设更好体验的精品网络,构建万物互联的信息社会. 本文分享自华为云社区<基于CarbonD ...

  5. [SVN] Branch and Tag

    在 SVN 中,如何建立分支以及如何标记Tag. 右键要处理的文件夹,选择 "TortoiseSVN" - "Branch/tag...",进入下面界面: To ...

  6. ☕【Java深层系列】「技术盲区」让我们一起完全吃透针对于时间和日期相关的API指南

    技术简介 java中的日期处理一直是个问题,没有很好的方式去处理,所以才有第三方框架的位置比如joda.文章主要对java日期处理的详解,用1.8可以不用joda. 时间概念 首先我们对一些基本的概念 ...

  7. arthas 简单使用

    简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 官网地址:https://arthas.aliyun.com/ 它可以做什么,以下功能都是直接操作线上跑着的jar包!!! ...

  8. 洛谷 P7078 - [CSP-S2020] 贪吃蛇(贪心)

    题面传送门 题意: 有 \(n\) 条蛇,每条蛇有个实力 \(a_i\) 我们称编号为 \(x\) 的蛇比编号为 \(y\) 的蛇强,当且仅当 \(a_x>a_y\) 或 \(a_x=a_y\) ...

  9. 【R】write.table输出数据带有行名?

    目录 问题 解决一 解决二 问题 这个问题应该很常见吧.R中输出数据框时,想要把行名和列名都输出.如果直接输出的话,输出的结果列名会往前移动一位,这显然不是我们想要的. 直接上例子: > a = ...

  10. Linux学习——Gdb基本调试方法&&多线程调试

    1.Gdb的基本调试 示例代码 //e.c #include <stdio.h> void debug(char *str) { printf("debug info :%s\n ...