美文网首页java新手学习Java 杂谈
Java趣味分享:try/finally

Java趣味分享:try/finally

作者: Python编程社区 | 来源:发表于2019-04-09 13:59 被阅读0次

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

    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。

    我做开发十多年的时间,如果大家对于学习java的学习方法,学习路线以及你不知道自己应该是自学还是培训的疑问,都可以随时来问我,大家可以加我的java交流学习qun:615741636。qun内有学习教程以及开发工具。

    相关文章

      网友评论

        本文标题:Java趣味分享:try/finally

        本文链接:https://www.haomeiwen.com/subject/whpbiqtx.html