谁能解释一下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);
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
false
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 104
foo
为null并且sFlag
为falsefoo
)运行:
Foo
创建了一个新实例flag
执行的实例变量初始值设定项- 当前sFlag
为false,因此值为flag
falsesFlag
)执行,将值设置为truemain
跑,打印出来foo.flag
,这是假的请注意,如果sFlag
声明final
它将被视为编译时常量,此时对它的所有引用基本上都会被内联true
,所以foo.flag
也是如此.
当类被加载,sFlag
和foo
字段被初始化,但foo
首先被初始化!
字段flag
并且sFlag
是布尔值,不能为空,因此默认情况下它是false,并且在初始化sFlag
时仍然是false foo
.flag = sFlag
在这之后flag
是假的.就是这样
归档时间: |
|
查看次数: |
2341 次 |
最近记录: |