相关疑难解决方法(0)

最终定义不明确吗?

首先,一个难题:以下代码打印什么?

public class RecursiveStatic {
    public static void main(String[] args) {
        System.out.println(scale(5));
    }

    private static final long X = scale(10);

    private static long scale(long value) {
        return X * value;
    }
}
Run Code Online (Sandbox Code Playgroud)

回答:

0

下面的剧透.


如果您打印X的规模(长),并重新定义X = scale(10) + 3,印刷品会X = 0那么X = 3.这意味着X暂时设置为0以后设置为3.这是违反final!

static修饰符与final修饰符结合使用,也用于定义常量.最终修饰符表示此字段的值不能更改.

来源:https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html [强调添加]


我的问题:这是一个错误吗?被final定义不清?


这是我感兴趣的代码. X分配了两个不同的值:03.我认为这违反了 …

java final class-variables static-initialization

184
推荐指数
4
解决办法
1万
查看次数