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将数字金额转为大写中文金额,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java如何实现验证码验证功能

    Java如何实现验证码验证功能

    这篇文章主要教大家如何实现Java验证码验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Spring MVC基于注解的使用之JSON数据处理的方法

    Spring MVC基于注解的使用之JSON数据处理的方法

    这篇文章主要介绍了Spring MVC基于注解的使用JSON数据处理,json是一种轻量级的数据交换格式,是一种理想的数据交互语言,它易于阅读和编写,同时也易于机器解析和生成,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • SpringBoot 整合Mybatis-Plus并输出SQL日志示例详解

    SpringBoot 整合Mybatis-Plus并输出SQL日志示例详解

    这篇文章主要介绍了SpringBoot整合Mybatis-Plus并输出SQL日志,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • java语言图形用户登录界面代码

    java语言图形用户登录界面代码

    这篇文章主要为大家详细介绍了java语言图形用户登录界面代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 一文探寻Java装箱和拆箱的奥妙

    一文探寻Java装箱和拆箱的奥妙

    Java中的装箱(boxing)和拆箱(unboxing)是指将基本数据类型与其对应的包装类之间进行转换的过程。本文就来带大家探索一下Java装箱和拆箱的奥妙吧
    2023-04-04
  • Java8中List转换String字符串几种方式

    Java8中List转换String字符串几种方式

    这篇文章主要给大家介绍了关于Java8中List转换String字符串的几种方式,在实际开发中经常遇到List转为String字符串的情况,文中给出了几种方法的示例代码,需要的朋友可以参考下
    2023-07-07
  • Java基于ArrayList实现群主发红包功能

    Java基于ArrayList实现群主发红包功能

    这篇文章主要介绍了Java基于ArrayList实现群主发红包功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • idea使用带provide修饰依赖导致ClassNotFound

    idea使用带provide修饰依赖导致ClassNotFound

    程序打包到Linux上运行时,若Linux上也有这些依赖,为了在Linux上运行时避免依赖冲突,可以使用provide修饰,本文主要介绍了idea使用带provide修饰依赖导致ClassNotFound,下面就来介绍一下解决方法,感兴趣的可以了解一下
    2024-01-01
  • java文件上传至ftp服务器的方法

    java文件上传至ftp服务器的方法

    这篇文章主要为大家详细介绍了java文件上传至ftp服务器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论