一道面试题的思考

曾经有人问过这么一种状况,就是在try catch finnally里面分别添加了一个return,那么返回的值是哪一个里面的。这种问题很纠结啊,单纯按照书本知识确定会回答,finnally里面的哈~但是实际状况又是复杂多变的。java

笔者作了一次实验,在上述的状况下,确实是返回了finnally里面的值。可是,咱们在想一想,若是考官把这种状况修改一下呢?若是不在finnally里面加return,那么finnally里面的信息是否执行了呢?答案是会执行,可是return的是try里面的值。面试

不少朋友都说,哪一个傻缺会在try cache finnally里面都加return呢?至少没见过有人这么写,答案就是那个考官呗,哈哈,开个玩笑,别当真。编程

接下来,咱们看看这样一种状况:this

 

import java.util.concurrent.locks.ReentrantLock;

/**
 * @author hassop
 * @Description
 * @date 2016/8/19 0019
 * To change this template use File | Settings | File Templates.
 */
public class TryTest {
    private final static ReentrantLock clientLock = new ReentrantLock();
    public static final String test() {
        String t = "";

        try {
            clientLock.lock();
            t = "try";
            System.out.println("加锁成功");
            return t;
        } catch (Exception e) {
            // result = "catch";
            t = "catch";
            return t;
        } finally {
            t = "finally";
            clientLock.unlock();
            System.out.println("解锁成功");
            /*return t;*/ //加上返回finnally
        }
    }

    public static void main(String[] args) {
        System.out.println(TryTest.test());
    }
}

你以为该是怎么样的结果呢?ip

答案就是这个io

加锁成功
解锁成功
tryclass

public class TryTest {
    private final static ReentrantLock clientLock = new ReentrantLock();
    public static final String test() {
        String t = "";

        try {
            clientLock.lock();
            t = "try";
            System.out.println("加锁成功");
            return t;
        } catch (Exception e) {
            // result = "catch";
            t = "catch";
            return t;
        } finally {
            t = "finally";

            clientLock.unlock();

            System.out.println("解锁成功");
            return t;
         //加上返回finnally
        }
    }

    public static void main(String[] args) {
        System.out.println(TryTest.test());
    }
}

加锁成功
解锁成功
finallytest

至此,咱们既要知道考官给咱们埋坑时候的答案,也要知道正常编程时候须要注意的一些细节。import

最后,我以为这样的问题,考官想了解面试者什么呢?谁给我个答案。cli

若是想了解具体缘由须要分析二进制文件。

相关文章
相关标签/搜索