一道面試題的思考

曾經有人問過這麼一種狀況,就是在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

若是想了解具體緣由須要分析二進制文件。

相關文章
相關標籤/搜索