java – 以静态方式创建对象

有人能解释Java如何执行这段代码吗?我的意思是执行每个语句的顺序。

public class Foo
{
    boolean flag = sFlag;
    static Foo foo = new Foo();
    static boolean sFlag = true;

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

输出:

false
>类初始化开始。最初,foo为null,且sFlag为false
>第一个静态变量初始值(foo)运行:

>创建一个Foo的新实例
>用于标志执行的实例变量初始化程序 – 当前sFlag为false,因此flag的值为false

>第二个静态变量初始值设置(sFlag)执行,将值设置为true
>类初始化完成
>主要运行,打印出foo.flag,这是假的

注意,如果sFlag被声明为final,它将被视为编译时常量,此时对它的所有引用基本上都会被内联为true,所以foo.flag也是true。

相关文章
相关标签/搜索