小编dev*_*per的帖子

在子类中执行Java静态块

我正准备自己进行Java认证测试,我发现了一个与Java静态块执行相关的有趣问题.我花了很多时间阅读这个主题,但我找不到我想要的答案.

我知道当类被加载到JVM中或者调用main方法时会执行静态块,但是......

package oneClassTasks;

class Parent {
    static int age;
}

class Child extends Parent {
    static {
        age = 5;
        System.out.println("child's static block");
    }
}

public class XXX {

    public static void main(String args[]) {
        System.out.println("Child age is : "+ Child.age);
    }

}
Run Code Online (Sandbox Code Playgroud)

输出是:

Child age is : 0
Run Code Online (Sandbox Code Playgroud)

如果我包含详细输出-verbose:class,则输出为:

...
[Loaded java.security.BasicPermissionCollection from C:\Program Files\Java\jre1.8.0_161\lib\rt.jar]
[Loaded oneClassTasks.XXX from file:/D:/temp/bin/]
[Loaded sun.launcher.LauncherHelper$FXHelper from C:\Program Files\Java\jre1.8.0_161\lib\rt.jar]
[Loaded java.lang.Class$MethodArray from C:\Program Files\Java\jre1.8.0_161\lib\rt.jar]
[Loaded java.lang.Void from C:\Program Files\Java\jre1.8.0_161\lib\rt.jar]
[Loaded oneClassTasks.Parent …
Run Code Online (Sandbox Code Playgroud)

java static jvm execution

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

标签 统计

execution ×1

java ×1

jvm ×1

static ×1