欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java趣味分享:try & finally

程序员文章站 2022-04-06 13:17:16
考虑以下四个测试方法,它们会输出什么? 答案如下: 1 0 u1 u2 结论 1、不管try,finally都会执行; 2、在try中return,在finally执行前会把结果保存起来,即使在finally中有修改也以try中保存的值为准,但如果是引用类型,修改的属性会以finally修改后的为准 ......

Java趣味分享:try & finally

考虑以下四个测试方法,它们会输出什么?

public class test {

    public static void main(string\[\] args) {

        system.out.println(test1());

        system.out.println(test2());

        system.out.println(test3());

        system.out.println(test4());

    }

    private static int test1() {

        int i = 1;
        try {
            return i;
        } catch (exception e) {
            e.printstacktrace();
        } finally {
            i = 0;
        }

        return i;

    }

    private static int test2() {

        int i = 1;
        try {
            return i;
        } catch (exception e) {
            e.printstacktrace();
        } finally {
            i = 0;
            return i;
        }

    }

    private static user test3() {

        user user = new user("u1");
        try {
            return user;
        } catch (exception e) {
            e.printstacktrace();
        } finally {
            user = new user("u2");
        }

        return null;

    }

    private static user test4() {

        user user = new user("u1");
        try {
            return user;
        } catch (exception e) {
            e.printstacktrace();
        } finally {
            user.setname("u2");
        }

        return null;

    }

}

public class user {

    public user(string name) {
        this.name = name;
    }

    private string name;

    public string getname() {
        return name;
    }

    public void setname(string name) {
        this.name = name;
    }

    @override
    public string tostring() {
        return name;
    }

}

答案如下:

1

0

u1

u2

结论

1、不管try,finally都会执行;

2、在try中return,在finally执行前会把结果保存起来,即使在finally中有修改也以try中保存的值为准,但如果是引用类型,修改的属性会以finally修改后的为准;

3、如果try/finally都有return,直接返回finally中的return。

推荐去我的博客阅读更多:

1.java jvm、集合、多线程、新特性系列教程

2.spring mvc、spring boot、spring cloud 系列教程

3.maven、git、eclipse、intellij idea 系列工具教程

4.java、后端、架构、阿里巴巴等大厂最新面试题

觉得不错,别忘了点赞+转发哦!