zoukankan      html  css  js  c++  java
  • return研究


    public static int f(){ try{ return 1; }finally{ return 2; } }

    答案:

    返回2,可能jvm认为一个方法里面有两个return语句并没有太大的意义,所以try中的return语句给忽略了,直接起作用的是finally中的return语句。

        public static final String test() {
            String t = "";
     
            try {
                t = "try";
                return t;
            } catch (Exception e) {
                // result = "catch";
                t = "catch";
                return t;
            } finally {
                t = "finally";
            }
        }

    答案:

    返回try,通过分析字节码,在try语句的return块中return返回的引用变量t并不是try语句外定义的引用变量t,而是系统重新定义了一个局部引用t,这个引用指向了引用t对应的值,也就是try。即使在finally语句中把引用t指向了值finally,因为return的返回引用已经不是t,所以引用t的对应的值和try语句中的返回值无关了。

        public static final String test() {
            String t = "";
    
            try {
                t = "try";
                Integer.parseInt(null);
                return t;
            } catch (Exception e) {
                t = "catch";
                return t;
            } finally {
                t = "finally";
                // System.out.println(t);
                // return t;
            }
        }

    答案:

    返回catch,原理同上。

        public static final String test() {
            String t = "";
    
            try {
                t = "try";
                Integer.parseInt(null);
                return t;
            } catch (Exception e) {
                t = "catch";
                Integer.parseInt(null);
                return t;
            } finally {
                t = "finally";
                //return t;
            }
        }

    答案:

    直接报错。

        public static final String test() {
            String t = "";
    
            try {
                t = "try";
                Integer.parseInt(null);
                return t;
            } catch (Exception e) {
                t = "catch";
                Integer.parseInt(null);
                return t;
            } finally {
                t = "finally";
                return t;
            }
        }

    答案:

    返回finally。

  • 相关阅读:
    第一次做Java程序注意事项
    数制学习笔记
    1228作业
    1226作业(转为十进制)
    [SDOI2010] 古代猪文 (快速幂+中国剩余定理+欧拉定理+卢卡斯定理) 解题报告
    Miller-Rabin
    STL整理之set
    [HNOI2008] GT考试(DP+矩阵快速幂+KMP)
    [JZOJ4024] [佛山市选2015] 石子游戏 解题报告
    [JZOJ3383] [NOIP2013模拟] 太鼓达人 解题报告(数位欧拉)
  • 原文地址:https://www.cnblogs.com/coolgame/p/8795792.html
Copyright © 2011-2022 走看看