相关疑难解决方法(0)

为什么更改finally块中的返回变量不会更改返回值?

我有一个简单的Java类,如下所示:

public class Test {

    private String s;

    public String foo() {
        try {
            s = "dev";
            return s;
        } 
        finally {
            s = "override variable s";
            System.out.println("Entry in finally Block");  
        }
    }

    public static void main(String[] xyz) {
        Test obj = new Test();
        System.out.println(obj.foo());
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是这样的:

Entry in finally Block
dev  
Run Code Online (Sandbox Code Playgroud)

为什么s不在finally块中覆盖,而是控制打印输出?

java try-finally

145
推荐指数
6
解决办法
1万
查看次数

每个优秀的Java/Java EE开发人员应该能够回答的问题?

我所经历的问题,每一个良好的.NET开发人员应该能够回答,是这个问题的内容和方法非常深刻的印象,因此,在同样的精神,我要求的Java/Java EE的开发者这个问题.

有什么问题你认为应在良好的Java/Java EE的程序员能够回答?

我将此问题标记为社区维基,因为它不是用户特定的,它旨在为整个编程社区提供服务.

期待一些惊人的回应.

编辑:请回答问题,如评论中所建议的那样,这样人们也可以学习一些关于语言的新知识.

java java-ee

138
推荐指数
21
解决办法
20万
查看次数

标签 统计

java ×2

java-ee ×1

try-finally ×1