【问题标题】:Initialize value of variable while declaration [duplicate]声明时初始化变量的值[重复]
【发布时间】:2015-11-23 06:40:23
【问题描述】:

有人可以解释一下为什么下面的程序会产生 100 吗?我希望 1010

public final class Testing {
    static int j = function1();
    static int i = 10;

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

    public static int function1() {
    return i;
    }

}

【问题讨论】:

    标签: java


    【解决方案1】:

    static 变量按照它们在类源代码中出现的顺序进行初始化。因此当j初始化时,i默认还是0,所以function1返回0j初始化为0

    j 初始化为0 后,i 初始化为10,您的main 打印100

    JLS 12.4.2

    接下来,执行类的类变量初始化程序和静态初始化程序,或者接口的字段初始化程序,按文本顺序,就好像它们是一个单独的块

    【讨论】:

    • 非常感谢......对我来说清晰而完美的解决方案。
    • 替换两行的顺序:static int i = 10;静态 int j = function1();这是因为 i(整数)的内存在你设为 10 之前被初始化为 0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多