Java中finally关键字对返回值的影响详解

 更新时间:2024年01月15日 09:53:08   作者:Mu_Mu是一只小白  
这篇文章主要介绍了Java中finally关键字对返回值的影响详解,执行完try catch里面内容准备return时,如果还有finally需要执行这是编译器会为我们增加一个全局变量去暂存return 的值,等到finally执行完成去return这个全局变量,需要的朋友可以参考下

finally关键字对返回值的影响

执行完try catch里面内容准备return时,如果还有finally需要执行这是编译器会为我们增加一个全局变量去暂存return 的值,等到finally执行完成去return这个全局变量,如果finally有return语句就返回finally块的return结果

1.基本数据类型

1)不在finally return时,返回结果是0,finally对返回结果无改变。

  public static int getCount(){
        int count=0;
        try{
            return count;
        }finally {
            count=6;
          
        }
    }

2)在finally return时,返回结果是6,返回finally的return结果。

 public static int getCount(){
        int count=0;
        try{
            return count;
        }finally {
            count=6;
            return count;
        }
    }

2.String类型

返回结果“112”,编译器会创建一个全局的字符串引用会指向content+"2"的结果用于后面return,因为String内容是不可变的,content+"2"会形成一个新的对象和content已经不是一个对象了,所以改变content的值无法改变返回值。

public static String getContent(){
        String content="11";
        try{
            return content+"2";
        }finally {
            content="6";
        
        }
    }

3.其他引用类型

打印出的内容为“221133”,编译器会创建一个全局的StringBuilder类型的引用指向sbuild用于return,在finally中对sbuild指向的对象进行了改变,所以该改变会体现在返回值中。

public static StringBuilder getContent2(){
        StringBuilder sbuild=new StringBuilder("22");
        try{
            return sbuild.append("11");
        }finally {
            sbuild.append("33");
        }
    }

到此这篇关于Java中finally关键字对返回值的影响详解的文章就介绍到这了,更多相关finally关键字对返回值的影响内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java监听器的实现和原理详解

    java监听器的实现和原理详解

    这篇文章主要给大家介绍了关于java监听器实现和原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Spring cloud 限流的多种方式

    Spring cloud 限流的多种方式

    在频繁的网络请求时,服务有时候也会受到很大的压力,尤其是那种网络攻击,非法的。这样的情形有时候需要作一些限制。本文主要介绍了两种限流方法,感兴趣的可以了解一下
    2021-06-06
  • 一篇文章让你弄懂Java运算符

    一篇文章让你弄懂Java运算符

    java中位运算符主要有按位与&、按位或|、按位非~、按位异或^, 在使用时需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示,这篇文章主要给大家介绍了关于Java运算符的相关资料,需要的朋友可以参考下
    2022-03-03
  • 自定义application.yml配置项方式

    自定义application.yml配置项方式

    这篇文章主要介绍了自定义application.yml配置项方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Springboot通过配置WebMvcConfig处理Cors非同源访问跨域问题

    Springboot通过配置WebMvcConfig处理Cors非同源访问跨域问题

    这篇文章主要介绍了Springboot通过配置WebMvcConfig处理Cors非同源访问跨域问题,关于Cors跨域的问题,前端有代理和jsonp的常用方式解决这种非同源的访问拒绝策略
    2023-04-04
  • Spring Boot:Idea从零开始初始化后台项目的教程

    Spring Boot:Idea从零开始初始化后台项目的教程

    这篇文章主要介绍了Spring Boot:Idea从零开始初始化后台项目的教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 在MyBatis中使用接口映射的步骤详解

    在MyBatis中使用接口映射的步骤详解

    在MyBatis中使用接口映射是一种基于Java接口而非XML映射文件的方式来绑定SQL查询和操作,这种方法使用注解来指定SQL语句,并将其直接关联到接口方法上,本文给大家介绍了在MyBatis中使用接口映射的步骤,需要的朋友可以参考下
    2024-06-06
  • FeignClient实现接口调用方式(不同参数形式)

    FeignClient实现接口调用方式(不同参数形式)

    这篇文章主要介绍了FeignClient实现接口调用方式(不同参数形式),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java设计模式七大原则之单一职责原则详解

    Java设计模式七大原则之单一职责原则详解

    单一职责原则(Single Responsibility Principle, SRP),有且仅有一个原因引起类的变更。简单来说,就是针对一个java类,它应该只负责一项职责。本文将详细介绍一下Java设计模式七大原则之一的单一职责原则,需要的可以参考一下
    2022-02-02
  • SpringBoot整合Flyway实现数据库的初始化和版本管理操作

    SpringBoot整合Flyway实现数据库的初始化和版本管理操作

    Flyway 是一款开源的数据库版本管理工具,它可以很方便的在命令行中使用,或者在Java应用程序中引入,用于管理我们的数据库版本,这篇文章主要介绍了SpringBoot整合Flyway实现数据库的初始化和版本管理,需要的朋友可以参考下
    2023-06-06

最新评论